Welcome 微信登录

首页 / 操作系统 / Linux / 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"> 56 <hibernate-mapping package="com.hibernate.domain"> 78 <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"> 45 <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 //打开session14 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 //返回list39teacher=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 { 23 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