3.hibernate第一个例子-保存对象
使用hibernate框架需要导入的jar包:
antlr-2.7.6
backport-util-concurrent
c3p0-0.9.1
commons-collections-3.1 apache集合帮助的包
commons-logging-1.1.1日志
dom4j-1.6.1解析XML
ehcache-1.5.0缓存框架
hibernate3hibernate核心包
javassist-3.9.0.GA代理模式工具包,解决懒加载问题
jta-1.1
log4j日志
mysql-connector-java-5.1.10-bin数据库连接
slf4j-api-1.5.8
slf4j-log4j12
Person-持久化类
/** * 对象的序列化的作用:让对象在网络上传输,以二进制的形式传输 * Serializable标示接口 */ public class Person implements Serializable{ private Long pid; private String pname; private String psex; set,get方法 }
映射文件 Person.hbm.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- 用来描述一个持久化类 name 类的全名 table 对应的表名,可以不写 默认值和类名一样 catalog 数据库的名称 一般不写 --> <class name="cn.itcat.domain.Person"> <!-- 标示属性 和数据库中的主键对应 name 属性的名称 column 列的名称 length 表中字段长度 --> <id name="pid" column="pid" length="200" type="java.lang.Long"> <!-- 主键的产生器 就该告诉hibernate容器用什么样的方式产生主键--> <generator class="increment"></generator> </id> <!-- 描述一般属性 --> <property name="pname" column="pname" length="20" type="string"></property> <property name="psex" column="psex" length="10" type="java.lang.String"></property> </class> </hibernate-mapping>
配置文件 hibernate.cfg.xml
<?xml version=‘1.0‘ encoding=‘utf-8‘?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <!--一个session-factory只能连接一个数据库--> <session-factory> <!--数据库的用户名--> <property name="connection.username">root</property> <!--密码--> <property name="connection.password">root</property> <!-- url--> <property name="connection.url"> jdbc:mysql://localhost:3306/hibernateDay01 </property> <!-- "hbm2ddl.auto"作用:根据持久化类和映射文件生成表 validate 只校验 create-drop启动hibernate创建,关闭hibernate销毁表 create 启动hibernate容器生成表 update 启动hibernate容器时检查持久化类和表对不对应,如果不对应,创建表,对应的话,验证。 --> <property name="hbm2ddl.auto">update</property> <!-- 显示hibernate内部生成的sql语句 --> <property name="show_sql">true</property> <mapping resource="cn/itcat/domain/Person.hbm.xml" /> </session-factory> </hibernate-configuration>
测试
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; public class PersonTest { @Test public void testCreateTable(){ //测试数据库中会不会根据持久化类和映射文件生成表 Configuration configuration = new Configuration(); configuration.configure(); //加载配置文件1、该配置文件必须放在classpath下2、名称必须为hibernate.cfg.xml configuration.buildSessionFactory(); } @Test public void testSavePerson(){ Configuration configuration = new Configuration(); configuration.configure(); SessionFactory factory = configuration.buildSessionFactory(); Session session = factory.openSession(); Transaction transaction = session.beginTransaction(); Person person = new Person(); person.setPname("班长2"); person.setPsex("女"); /** * 参数必须持久化对象 */ session.save(person); transaction.commit(); session.close(); } }
时间: 2024-10-27 07:25:49