Hibernate框架的搭建
1. 添加jar包
hibernate解压后将lib/required文件夹下的jar包都添加到WebContent/lib下
2. 添加核心配置文件
src/hibernate.cfg.xml 数据库连接相关配置【c3p0】运行时常量【show_sql format_sql】和注册映射元文件【xml和注解】
运行时常量hibernate.hbm2ddl.auto 可以取值有4种:
1、create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。可以理解为drop-create
2、create-drop :每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。用于测试阶段
3、update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。在开发阶段中配置

查看配置文件,可以看到唯一性约束
解决方法:用户名称必须唯一
3. 定义实体类和对应的映射元文件


在核心配置文件中注册映射元文件
在这里采用xml开发
4、编程调用
public class TestAPI {
public static void main(String[] args) {
UserBean user = new UserBean();
user.setUsername("xiaohui");
user.setPassword("666666");
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder()
.configure().build();
SessionFactory fac = new MetadataSources(ssr).buildMetadata()
.buildSessionFactory();
Session session = fac.openSession();
Transaction transaction = session.beginTransaction();
session.persist(user);
transaction.commit();
session.close();
}
@Test
public void testSave() {
UserBean user = new UserBean();
user.setUsername("xiaohui");
user.setPassword("666666");
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder()
.configure().build();
SessionFactory fac = new MetadataSources(ssr).buildMetadata()
.buildSessionFactory();
Session session = fac.openSession();
Transaction transaction = session.beginTransaction();
session.persist(user);
//session.save(user);
transaction.commit();
session.close();
}

动态插入dynamic-insert="true" 和动态修改 dynamic-update="true"

删除数据
按照id加载数据


5、常见的异常和对应的处理方法
解决方法:检查当前操作的实体类对象是否符合映射元文件中的约束说明
解决方法:检查映射元文件中看哪个属性在实体类中没有进行定义