一. 简单的实体类 POJO规则
写一个简单的User表的CRUD操作
其中关于实体类User有以下几点规则需要注意:
1.属性必须私有,用private 进行修饰。
2.实现属性对应的setter和getter方法。
3.具有唯一标识符,一般为id.
4.建议使用包装类型,如Integer, 而不是使用原始类型 int. 如学生考试时的区别。
5.建议实体类实现序列化接口,Serializable 。
6.实体类最好不要用final 关键字进行修饰。
二. 实现 实体的CRUD 操作
二.一 新建Hibernate工具类 HibernateUtils.java
HibernateUtils.java
package com.yjl.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /** @author: 两个蝴蝶飞 @date: 2018年10月8日 下午8:43:29 @Description SessionFactory的工具类 */ public class HibernateUtil { /** * @param configuration 配置 * @param sessionFactory session工厂 */ private static Configuration configuration; private static SessionFactory sessionFactory=null; //私有化 private HibernateUtil(){ } /* * 得到sessionFactory对象 */ public static SessionFactory getSessionFactory(){ if(sessionFactory==null){ configuration=new Configuration(); configuration.configure(); sessionFactory=configuration.buildSessionFactory(); } return sessionFactory; } /* * 得到session对象 */ public static Session getSession(){ return getSessionFactory().openSession(); } //测试一下 public static void main(String []args){ System.out.println(getSession()); } }
SessionFactory是单实例的,整个Hibernate运行项目期间只生成一个,用单例模式生成!!!. 注意这点。
二.二 插入的测试 save
@Test public void saveTest(){ //1 得到Session对象 Session session=HibernateUtil.getSession(); //2 打开事务 Transaction tran=session.beginTransaction(); //3 实例化对象 User user=new User(); user.setUserName("两个蝴蝶飞"); user.setSex("男"); user.setAge(24); user.setPassword("123456"); user.setDescription("一个有梦想的程序员"); //4利用save()方法进行相应的保存 session.save(user); //5 提交事务 tran.commit(); //6 关闭session session.close(); }
运行后查看数据库,发现user表添加了,而且正确的插入了数据
上面主键的生成策略是,native .即:
<id name="id" column="id"> <generator class="native"></generator> </id>
如果转换成UUID形式的,需要将id先转换成String类型为uid,生成setter和getter方法:
User.java中:
private String uid; public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; }
相应的配置 User.hbm.xml中: 转换成uuid
<id name="uid" column="uid"> <generator class="uuid"></generator> </id>
重新执行上面的saveTest()方法,进行测试
生成的数据表:
二.三 简单查询的测试 get()
@Test public void getTest(){ Session session=HibernateUtil.getSession(); User user=session.get(User.class,1); System.out.println(user.getUserName()+"----"+user.getDescription()); }
二.四 简单修改的测试 update()
@Test public void updateTest(){ //1 得到Session对象 Session session=HibernateUtil.getSession(); //2 打开事务 Transaction tran=session.beginTransaction(); //3 得到对象 User user=session.get(User.class,1); if(user!=null){ user.setAge(26); user.setDescription("要做一个高级程序员"); //4利用save()方法进行相应的保存 session.update(user); } //5 提交事务 tran.commit(); //6 关闭session session.close(); }
二.五 简单删除的测试 delete()
@Test public void deleteTest(){ //1 得到Session对象 Session session=HibernateUtil.getSession(); //2 打开事务 Transaction tran=session.beginTransaction(); //3 得到对象 User user=session.get(User.class,1); //4 如果存在,就进行删除 if(user!=null){ session.delete(user); } //5 提交事务 tran.commit(); //6 关闭session session.close(); }
这就是一个实体的简单的 CRUD 操作演示。