课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > java教程 > Hibernate的简单示例
  • Hibernate的简单示例

    发布:昆明Java培训      来源:java教程      时间:2016-11-04

  • 昆明Java培训机构的老师今天给大家讲讲Hibernate的简单示例。

    首先我们新建一个项目,Java项目或者是Javaweb项目都可以,然后把hibernate需要的jar导入,我用的jar包如下:

    然后新建一个实体类Teacher.java并添加get和set方法:

    1 public class Teacher {

    2    private String username;

    3    private String password;

    4    private int age;

    5    public String getUsername() {

    6        return username;

    7    }

    8    public void setUsername(String username) {

    9        this.username = username;

    10    }

    11    public String getPassword() {

    12        return password;

    13    }

    14    public void setPassword(String password) {

    15        this.password = password;

    16    }

    17    public int getAge() {

    18        return age;

    19    }

    20    public void setAge(int age) {

    21        this.age = age;

    22    }

    23 }

    在Hibernate中一个实体类对应一个.hbm.xml文件,因此我们新建一个Teacher.hbm.xml文件,内容如下:

    1 <?xml version="1.0"?>

    2 <!DOCTYPE hibernate-mapping PUBLIC

    3        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    4        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

    5

    6 <hibernate-mapping package="com.hibernate.domain">

    7    

    8    <class name="Teacher" table="Teacher">

    9         <id name="username" type="java.lang.String" column="username">

    10            <generator class="assigned"/>

    11        </id>

    12        <property name="password" type="java.lang.String" column="password" length="50"/>

    13        <property name="age" type="int" column="age" length="10"/>

    14    </class>

    15    

    16 </hibernate-mapping>

    其中第9-11行代表的是主键的配置,name是指实体类中的字段,而column则是指数据库中相对应的字段。<genetator>中的class="assigned"代表主键非自动增长。下面的<property>则是配置的非主键。此文件和实体类在同一个包中。

    之后我们需要在src目录下新建一个hibernate.cfg.xml文件,并将实体类对应的Teacher.hbm.xml文件导入,代码如下:

    1 <!DOCTYPE hibernate-configuration PUBLIC

    2    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

    3    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

    4

    5 <hibernate-configuration>

    6    <session-factory>

    7        <!--配置数据库信息-->

    8        <property ame="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

    9        <property ame="connection.url">jdbc:mysql://localhost:3306/test</property>

    10        <property ame="connection.driver_class">com.mysql.jdbc.Driver</property>

    11        <property ame="connection.username">root</property>

    12        <property ame="hibernate.connection.password"></property>

    13

    14    

    15        <!--导入映射文件-->

    16        <mapping resource="com/hibernate/domain/Teacher.hbm.xml"/>

    17    </session-factory>

    18 </hibernate-configuration>

    第7-12行为配置数据库的基本信息,当然大家用的时候需要改一下11、12行,改成自己数据库对应的用户名和密码。

    接下来我们写一个查询的方法和插入的方法TeacherDao.java:

    1 public class TeacherDao {

    2    //读取配置文件

    3    Configuration congif = new Configuration().configure();

    4    //创建sessionFactory

    5    SessionFactory sf = congif.buildSessionFactory();

    6    //创建session

    7    Session session = null;

    8    //创建事务(Hibernate必须用事务)

    9    Transaction tx = null;

    10    //插入一条数据

    11    public void insert(Teacher teacher) {

    12        try {

    13            //打开session

    14            session = sf.openSession();

    15            //开启事务

    16            tx = session.beginTransaction();

    17            //进行持久化操作(添加,删除,更新)

    18            session.save(teacher);

    19            //提交事务

    20            tx.commit();

    21        } catch (Exception e) {

    22            //事务回滚

    23            tx.rollback();

    24        } finally {

    25            if (session != null)

    26                session.close();

    27        }

    28

    29    }

    30    //查询数据

    31    public List<Teacher> find(String hql) {

    32        List<Teacher> teacher=new ArrayList<Teacher>();

    33        try {

    34            session = sf.openSession();

    35            tx = session.beginTransaction();

    36            //使用hql语句进行查询

    37            Query query=session.createQuery(hql);

    38            //返回list

    39             teacher=query.list();

    40            tx.commit();

    41        } catch (Exception e) {

    42            tx.rollback();

    43        } finally {

    44            if (session != null)

    45                session.close();

    46        }

    47        return teacher;

    48  }

    49 }

    当然如果我们的src目录下的hibernate.cfg.xml名称不为这个,则在第3行读取配置文件的时候需要加上配置文件的路径。我们来看一下文件的目录结构:

    昆明Java培训机构的老师在Test.java类中进行测试,代码如下:

    1 public class Test {

    2

    3    public static void main(String[] args) {

    4        /**

    5         *利用Hibernate的save方法进行持久化操作

    6         */

    7        Teacher t=new Teacher();

    8        t.setUsername("username4");

    9        t.setPassword("root4");

    10        t.setAge(20);

    11        TeacherDao dao=new TeacherDao();

    12        dao.insert(t);

    13        /**

    14         *使用hql语句进行查询

    15         * @return:将返回结果的username在控制台输出

    16         */

    17        String hql="from Teacher";

    18        List<Teacher> teacher=dao.find(hql);

    19        for (int i = 0; i < teacher.size(); i++) {

    20            System.out.println(teacher.get(i).getUsername());

    21        }

    22    }

    23

    24 }

    当然不要忘记数据库中的表,我们可以根据Teacher.java中的字段建立,完成之后我们就可以在Test.java中运行一下看看结果了。

    推荐文章

上一篇:10道JAVA的面试题

下一篇:使用Swagger2构建强大的RESTful API文档

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56