昆明java培训
达内昆明广州春城路

18487146383

热门课程

Hibernate的简单示例

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

昆明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文档

dubbo服务的线程模型

dubbo服务的负载均衡

dubbo服务的集群容错

dubbo服务的启动检查

选择城市和中心
贵州省

广西省

海南省

扫一扫

了解更多干货