(hibernate学习笔记系列来自于 “疯狂Java” 视频学习)
Hibernate概述
免费开源Java包,可以使程序和数据库的交互变得容易,并更加符合面向对象的设计。
持久化:将数据保存到数据库中
hibernate持久化类步骤
- 环境搭建
- 导入jar包,在hibernate包里的\lib\required文件夹里
- 导入mysql的JDBC驱动
- 将上述包添加到路径里面
- 编写持久化类
要求:
- 在持久化类中一般需要一个id,通常用Integer类型,这样之后操作会使用null,而不是使用0,这样向数据库添加的时候用null则数据库会自动添加
- 为属性提供getter和setter
- 这个类不能是final的
- 需要为这个类提供无参的构造器(反射技术)
- 如果有涉及集合数据的操作,集合类型要使用接口类型,如List,而不是ArrayList
- 编写映射文件
编写一个与持久化类名相同的映射文件,可以使用hibernate包中的project文件夹下面搜索*.hbm.xml文件,随便选择一个,复制,作为一个模板。
与持久化类类名相同是为了之后的维护,放到持久化类所在的包里。
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!--映射配置文件--> <!--持久化类与表的对应关系--> <hibernate-mapping package="类所在的包"> <!--面向对象的思想--> <class name="持久化类" table="表名"> <!--属性和列名--> <id name="持久化类中的id属性"> <!--id生成策略(参考cfg.xml文件中方言设置)--> <generator class="native" /> </id> <!--如果配置了column,则创建设置的对应列名,否则使用name创建列名--> <property name="属性" column="对应列名"/> <property name="属性1" /> .... </class> </hibernate-mapping>
- 配置连接数据库配置文件
文件模板可以从hibernate包的project/etc/hibernate.cfg.xml中拷贝。
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!--显示执行的SQL语句,开发阶段--> <property name="show_sql">true</property> <!--project/etc/hibernate.properties里可以找到数据库驱动的配置,然后参考着写--> <!--数据库驱动--> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!--数据库url,三个斜线(/)表示连接本机--> <property name="hibernate.connection.url">jdbc:mysql:///test</property> <!--用户名--> <property name="hibernate.connection.username">gavin</property> <!--密码--> <property name="hibernate.connection.password">root</property> <!-- 自动建立映射文件对应的数据库表 create-drop 在程序启动的时候创建对应的数据库表结构,当SessionFactory关闭的时候会将创建的表结构删除,测试使用 create 在每次程序启动的时候先删除上次创建的表结构,然后再创建对应的数据库表结构;测试使用 update 在每次启动的时候会追加和修改表结构,但是不会影响原来的数据(通常使用的最多的是这个) validate 每次启动的时候会验证并修改表结构 这些配置的删除操作并不一定会正确删除 --> <property name="hibernate.hbm2ddl.auto">update</property> <!--方言,这个方言支持事务 如果使用的Mysql数据库版本在5.5之后的话,建议使用org.hibernate.dialect.MySQL5InnoDBDialect MySQLDialect 不支持事务 MySQLInnoDBDialect 支持事务 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> <!--对象/关系映射文件所在的路径--> <mapping resource="path/XXX.hbm.xml"/> </session-factory> </hibernate-configuration>
- 持久化到数据库
//创建一个类,类中的main方法内容如下 //读取配置文件,创建Configuration实例 /* public Configuration configure() throws HibernateException{ configure("/hibernate.cfg.xml"); return this; } */ Configuration config = new Configuration().configure(); //此方法是hibernate4之前的获取方法 //根据配置文件获取factory //SessionFactory是与应用程序生命周期一致的,是在多个线程之间共享的 SessionFactory factory = config.buildSessionFactory(); //与数据库的一次交互 Session session = factory.openSession(); //在使用hibernate进行增加,删除,修改的时候需要事务 //查询不需要事务 Transaction tx = session.beginTransaction(); //创建需要持久化类Person对象 Person person = new Person(); person.setName("Li"); person.setPassword("123456"); person.setBirthday(new java.util.Date()); //保存对象到数据库中 session.save(person); //提交事务 tx.commit(); //关闭session,结束本次连接 session.close();
- 确保数据库存在,运行上述项目
时间: 2024-12-29 11:23:34