框架——hibernate
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了框架——hibernate相关的知识,希望对你有一定的参考价值。
2、构建hibernate框架 配置文件(核心).xml ========================================================================================== <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" > <!-- package:统一包,下面类名的包结构可以省略 --> <hibernate-mapping package="com.ly.crm.entity"> <!-- class:定义实体类和表的关系 name:实体类,完整类名(package已经填写好包,包名可以省略) table:实体类对应的表名 --> <class name="Customer" table="cst_customer"> <!-- id:表中的主键 name:类中的主键属性 column(可选):表中的主键字段 --> <id name="cust_id" column="cust_id"> <!-- generator主键生成策略 --> <generator class="native"></generator> </id> <!-- property:类中除了主键外的普通属性 name:类中的属性 column(可选):表中的字段,和属性名一致的字段 type(可选):类型,hibernate会自动检测 三种填法:Java类型“Java.lang.String”|hibernate类型“string”|数据库类型 sql-type="varchar" length(可选):长度,默认数据库允许的最大长度 not-null:非空约束,默认false --> <property name="cust_name" column="cust_name"></property> <property name="cust_source" column="cust_source"></property> <property name="cust_industry" column="cust_industry"></property> <property name="cust_level" column="cust_level"></property> <property name="cust_linkman" column="cust_linkman"></property> <property name="cust_phone" column="cust_phone"></property> <property name="cust_mobile" column="cust_mobile"></property> </class> </hibernate-mapping> =========================================================================================== 1、导入dtd结构 2、准备数据库,实体 3、配置对象关系映射 4、配置主配置文件,写在src下面,名字hibernate.cfg.xml 源码(解压的那个文件下)/project/etc/hibernate.properties mysql 5个 Show_sql 2个 ## auto schema export 1个 导入元数据映射文件 Mapping resource=”” ========================================================================================== <?xml version="1.0" encoding="UTF-8"?> <!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> <!-- #hibernate.dialect org.hibernate.dialect.MySQLDialect 会自动检测mysql #hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect 5.5以后 #hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect #hibernate.connection.driver_class com.mysql.jdbc.Driver #hibernate.connection.url jdbc:mysql:///test #hibernate.connection.username gavin #hibernate.connection.password --> <!-- 数据库驱动 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 数据库连接url --> <property name="hibernate.connection.url">jdbc:mysql:///crm_hibernate</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123456</property> <!-- 数据库方言:推荐使用最短的 5.0 sql语句在不同的数据库中,会有细微差异,在生成sql时,要根据不同的方言生成 sql99标准: DDL:数据定义语言,表结构增删改 DML:数据操纵语言,表内容增删改 DCL:数据控制语句,权限 TCL: DQL:属于DML的 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- #hibernate.show_sql true ## format SQL in log and console hibernate.format_sql true --> <!-- 打印/显示sql语句 --> <property name="hibernate.show_sql">true</property> <!-- 格式化sql语句 --> <property name="hibernate.format_sql">true</property> <!-- ## auto schema export 自动导出表结构 #hibernate.hbm2ddl.auto create-drop #hibernate.hbm2ddl.auto create #hibernate.hbm2ddl.auto update #hibernate.hbm2ddl.auto validate --> <!-- 格式化sql语句 create:自动建表(会先删除之前的表),测试环境使用 update:更新表内容,自动检测表结构(建议使用) create-drop:先建表,再删表,不希望有残留数据影响数据库,测试环境使用 validate:校验,要严格符合表结构才能对表数据进行操作 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 引入orm元数据映射文件,路径从src开始 --> <mapping resource="com/ly/crm/entity/Customer.hbm.xml"/> </session-factory> </hibernate-configuration> ========================================================================================== 5、测试单元 3、配置文件详解 1、加载配置文件;--无参构造器 加载src路径下的hibernate.cfg.xml文件 Configuration cf=new Configuration().configure(); 2、获得sessionFactory工厂对象; 作用:获得session对象 注意:1、sessionFactory非常消耗内存,占用资源 2、sessionFactory线程安全的工厂类 结论:在一个项目中,SessionFactory只有一个对象 SessionFactory sessionFactory=cf.buildSessionFactory() 3、获得session会话; Session session=sessionFactory.openSession(); 4、开启事务; Transaction tx=session.beginTransaction(); 5、利用session对数据库进行操作; //----------------------------------------- 新增Customer(实体类)对象 Customer c=new Customer( ); c.setName(“XX”); session.save(c); //----------------------------------------- 查询id为1的customer对象 Customer c=session.get(Customer.class,1l); c.setName(“XX”); 修改 session.update(c); 删除 session.delete(c); //--------------------------------------------- 6、事物提交/回滚; tx.commit(); 7、释放资源 session.close(); sessionFactory.close();
本文出自 “Java学习” 博客,请务必保留此出处http://12181171.blog.51cto.com/12171171/1962638
以上是关于框架——hibernate的主要内容,如果未能解决你的问题,请参考以下文章
HibernateHibernate配置与sessiontransaction
hibernateHibernate SQL 方言(hibernate.dialect)
hibernateHibernate中get()和load()的区别
HibernateHibernate中使用延迟加载应该注意的事项
hibernateHibernate中save, saveOrUpdate, persist, merge, update 区别