你好,游客 登录 注册 搜索
背景:
阅读新闻

Hibernate的简单示例

[日期:2016-11-01] 来源:Linux社区  作者:xwlych [字体: ]

首先我们新建一个项目,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 name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
 9         <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
10         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
11         <property name="connection.username">root</property>
12         <property name="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行读取配置文件的时候需要加上配置文件的路径。我们来看一下文件的目录结构:

我们在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中运行一下看看结果了。

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-11/136609.htm

linux
相关资讯       Hibernate示例 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款