(优势:跨数据库无缝移植)
(劣势:底层代码太多,内存较大,国产数据库的兴起)
如何在项目中添加hibernate支持(手动添加)一:ORM框架/持久层框架 jdbc的一个框架
二:object reference mapping 对象关系映射
三:通过管理对象来改变数据库中的数据
四:通过管理对象来操作数据库
一:添加hibernate相关依赖
二:在resource目录下添加hibernate.cfg.xml(核心配置文件)
1.添加DTD支持
2.添加Hibernate的配置
数据库相关(connection.username|connection.password|connection.url|connection.driver_class|dialect)
调试相关(show_sql|format_sql)
三:在开发阶段再创建实体类和实体映射文件(*.hbm.xml)
实体必须实现Serializable接口小结:hibernate.cfg.xml(1) Configuration configure = new Configuration().configure("/hibernate.cfg.xml"); SessionFactory sessionFactory = configure.buildSessionFactory(); Session session = sessionFactory.openSession(); List list = session.createQuery("from User").list(); for (Object object : list) { System.out.println(object); } session.close(); } }
结果展示:
新增
package com.sg.test; import java.sql.Date; import java.sql.Timestamp; import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.sg.entity.User; public class AddDemo { public static void main(String[] args) { Configuration configure = new Configuration().configure("/hibernate.cfg.xml"); SessionFactory sessionFactory = configure.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); User user=new User(); user.setBirthday(new Date(System.currentTimeMillis())); user.setCreateDatetime(new Timestamp(System.currentTimeMillis())); user.setId(55); user.setRealName("ddd"); user.setRemark("ddd"); user.setSex("女"); user.setUserName("2133"); user.setUserPwd("1212"); session.save(user); transaction.commit(); session.close(); } }结果展示:
这里出现一个问题,我传的id为55,但数据库变成了15,
是因为hibernate有4种控制方式
第一种是程序员自己控制:assigned
第二种是数据库控制:identity(标识列/自动增长) sequence
第三种是hibernate控制:increment
第四种是native控制
控制是在上面的那个User.hbm.xml中控制
我们改成自己控制再执行一遍
结果展示:
修改
package com.sg.test; import java.sql.Date; import java.sql.Timestamp; import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.sg.entity.User; public class EditDemo { public static void main(String[] args) { Configuration configure = new Configuration().configure("/hibernate.cfg.xml"); SessionFactory sessionFactory = configure.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); User user = session.get(User.class, 55); user.setRealName("哦呵呵"); System.out.println(user); transaction.commit(); session.close(); } }结果展示:
删除
方式一
package com.sg.test; import java.sql.Date; import java.sql.Timestamp; import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.sg.entity.User; public class EditDemo { public static void main(String[] args) { Configuration configure = new Configuration().configure("/hibernate.cfg.xml"); SessionFactory sessionFactory = configure.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); User user = session.get(User.class, 55); session.delete(user); transaction.commit(); session.close(); } }结果展示:
方式二:
package com.sg.test; import java.sql.Date; import java.sql.Timestamp; import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.sg.entity.User; public class EditDemo { public static void main(String[] args) { Configuration configure = new Configuration().configure("/hibernate.cfg.xml"); SessionFactory sessionFactory = configure.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); // User user = session.get(User.class, 55); User user=new User(); user.setId(15); session.delete(user); transaction.commit(); session.close(); } }结果展示:
拜拜了各位!!!



