Hibernate配置文件与关联映射介绍
以用户评论模块为例分三部分介绍Hibernate。
第一部分:评论模块的java文件;
第二部分:与Comment.java关联的hibernate配置文件,其中包括了对xxx.hbm.xml类型配置文件的详细介绍,和对many-to-one关联映射的介绍;
第三部分:Hibernate全局配置文件hibernate.cfg.xml,其中包括了对全局配置文件hibernate.cfg.xml的详细介绍。
1. 实体类,Comment.java文件
public class Comment {private Integer id;private Task task;// 所属任务private User user;// 评论人private String content;// 评论内容private String commentTime;// 评论时间//省略getter和setter函数 }
2. 与Comment.java关联的hibernate配置文件:Comment.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 package="admin.po"><!--name为实体类的包名+类名,如admin.po.Comment,但上已指定包,此处只需写类名Comment,table为数据库的表名--><class name="Comment" table="comment"><!-- <id>:定义了该属性到数据库表主键字段的映射。 name="id":标识实体类的属性的名字; column="id":表数据库主键字段的名字,如果不填写与name一样; --><id name="id" column="id" ><!--主键的生成策略 native可以适应多种数据库 increment mysql自动增长策略 sequence oracle自动增长策略 --><generator class="native"></generator></id><!-- <property>:为类定义一个持久化的javaBean风格的属性。 name="content":标识属性的名字,以小写字母开头; column="content":表主键字段的名字,如果不填写与name一样; type="java.lang.String":属性的类型not-null="false":属性是否为空,为true时表示非空,默认为falselength="500":属性字段的长度限制-><property name="content" column="content" type="java.lang.String" not-null="false" length="500"></property><property name="commentTime" column="commentTime" type="java.lang.String" not-null="false" ></property><!--<many-to-one>:多对一关系映射,此处comment为多,user为一根据需求,查看评论时需知评论的用户,而查询用户时不需要知道评论,所以,要在Comment.hbm.xml中配置many-to-one,而不需要在User.hbm.xml中配置one-to-manyname="user":java映射类中对应的属性名,指出many一方的类用哪个属性和one一方的类关联column="user_id":表中对应字段,指出many一方的类对应的数据表用哪个列和one一方的类对应的数据表关联(两表之间存在外键关联)class="admin.po.User":关联的类的名字(可选 - 默认是通过反射得到属性类型)not-null="false"lazy="false":可选,默认为proxy,指单点关联是经过代理的;lazy="true" 指定此属性应该在实例变量第一次被访问时应该延迟抓取;lazy="false" 指定此关联总是被预先抓取--><many-to-one name="user"column="user_id"class="admin.po.User"not-null="false"lazy="false"></many-to-one><many-to-one name="task"column="task_id"class="admin.po.Task"not-null="false"lazy="false"></many-to-one></class> </hibernate-mapping>
3. Hibernate全局配置文件,文件名默认为hibernate.cfg.xml
<!--标准的XML文件的起始行,version="1.0"表明XML的版本,encoding="UTF-8"表明XML文件的编码方式--> <?xml version="1.0" encoding="UTF-8"?> <!--表明解析本XML文件的DTD文档位置,DTD是Document Type Definition 的缩写,即文档类型的定义,XML解析器使用DTD文档来检查XML文件的合法性。 hibernate.sourceforge.net/hibernate-configuration-3.0dtd可以在Hibernate3.1.3软件包中的src\org\hibernate目录中找到此文件--> <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!--声明Hibernate配置文件的开始--> <hibernate-configuration><!--表明以下的配置是针对session-factory配置的,SessionFactory是Hibernate中的一个类,这个类主要负责保存Hibernate的配置信息,以及对Session的操作--><session-factory><!--配置数据库的驱动程序,Hibernate在连接数据库时,需要用到数据库的驱动程序--><property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property><!--设置数据库的连接url:jdbc:mysql://localhost/hibernate,其中localhost:3306表示mysql服务器名称,此处为本机,hibernate是数据库名--> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property><!--连接数据库是用户名--><property name="hibernate.connection.username">ssh</property><!--连接数据库是密码--> <property name="hibernate.connection.password">ssh</property><!-- 最大连接数 --> <property name="hibernate.c3p0.max_size">20</property> <!-- 最小连接数 --> <property name="hibernate.c3p0.min_size">5</property> <!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 --> <property name="hibernate.c3p0.timeout">120</property> <!-- 最大的PreparedStatement的数量 --> <property name="hibernate.c3p0.max_statements">100</property> <!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒--> <property name="hibernate.c3p0.idle_test_period">120</property> <!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 --> <property name="hibernate.c3p0.acquire_increment">2</property> <!-- 每次都验证连接是否可用 --> <property name="hibernate.c3p0.validate">true</property><!--hibernate.dialect 指的是Hibernate使用的数据库方言,就是要用Hibernate连接哪种类型的数据库服务器--><property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property><!--显示Hibernate持久化操作所生成的SQL--><property name="hibernate.show_sql">true</property><!--根据需要自动创建数据表--><property name="hibernate.hbm2ddl.auto">update</property><!--罗列所有持久化类的类名--><mapping class="com.jialin.entity.User"/></session-factory></hibernate-configuration>
转载于:https://www.cnblogs.com/nightowc/p/4683610.html
Hibernate配置文件与关联映射介绍相关推荐
- 【Hibernate步步为营】--关联映射之多对一
上篇文章讨论了Hibernate的基本映射,一个实体类对应着一张表,在相应的Hibernate Mapping文件中使用<class>标签映射.并且实体类中的普通属性对应着表字段,使用&l ...
- 【Hibernate框架】关联映射(多对多关联映射)
按着我们的总结行进计划,接下来,就是有关于多对多映射的总结了. 我们来举个例子啊,很长时间以来,房价暴涨不落,但是还有很多人拥有很多套房产,假如说,一个富豪拥有九套房产,家里人么准去住哪一套,我们就以 ...
- hibernate一对多关联映射
一对多关联映射 映射原理 一对多关联映射和多对一关联映射的映射原理是一致的,都是在多的一端加入一个外键,指向一的一端.关联关系都是由多端维护,只是在写映射时发生了变化. 多对一和一对多的区别 多对一和 ...
- hibernate的数据关联映射
数据关联映射分为:一对多.多对一,一对一,多对多. cascade属性 • save-update:在执行保存和修改是进行级联操作 • delete:在执行删除时进行级联操作 • all:在所有情况下 ...
- Hibernate一对多关联映射及cascade级联操作
我们以客户(Customer)与订单(Order)为例 实体类创建 Order订单实体类 //订单-----多的一方 public class Order {private Integer id;pr ...
- hibernate(3)对象关联映射
2019独角兽企业重金招聘Python工程师标准>>> 1.概述 2.关联关系 3.一对多关联关系 一个班级有很多学生,设置students属性,关联表字段,班级选用班级外键GID ...
- Hibernate笔记——9.关联映射(下)
占坑 转载于:https://blog.51cto.com/mengcao/1692687
- Java三大框架之——Hibernate关联映射与级联操作
什么是Hibernate中的关联映射? 简单来说Hibernate是ORM映射的持久层框架,全称是(Object Relational Mapping),即对象关系映射. 它将数据库中的表映射成对应的 ...
- Hibernate关联映射(一对多/多对多)
版权声明:翀版 https://blog.csdn.net/biggerchong/article/details/84340105 3. Hibernate关联映射 上接Hibernate持久化类 ...
- Hibernate一对多单向关联和双向关联映射方法及其优缺点
一对多关联映射和多对一关联映射实现的基本原理都是一样的,既是在多的一端加入一个外键指向一的一端外键,而主要的区别就是维护端不同. 它们的区别在于维护的关系不同: 一对多关联映射是指在加载一的一端数据的 ...
最新文章
- java link 使用_使用 C 实现Java LinkList
- 在Kubernetes v1.8中使用RBAC
- java实现循环链表
- 读《代码整洁之道》前四章浅显印象 和 我所见的不整洁代码引以为戒
- 炫彩渐变液态海报设计,太skr了!
- LeetCode 3. 无重复字符的最长子串 (滑动窗口哈希表)
- 接口——从事物的共同点出发
- python数值类型和序列类型_Python基础(一):数值类型,序列类型
- git和github的基本使用
- Atitit 常见信息化系统类别erp mes crm cms oa 目录 1. 企业资源规划(ERP)、客户关系管理(CRM)、协同管理系统(CMS)是企业信息化的三大代表之作	1 2. 概
- 从delphi 10.3到delphi 10.4的改变实务
- obs源码分析【二】:录制功能剖析
- 图文教你选择和区别A卡和N卡
- 动态规划背包问题matlab,动态规划解决01背包问题
- php导出word文档图片不显示,word文档几种不显示图片的解决方法
- 30岁测试员在一家公司工作八年后,告别“体制化”终于跳槽,别再妄想靠公司养老了!
- 公寓宽带服务器无响应,利用RLDP协议解决网络环路故障
- 别让这些考场突发情况毁了你一整年的心血!!
- 水晶报表各版本比较及相关释疑v2
- 【回眸】RS485VSRS232,I2C,SPI特点、什么是PMIC、RTOS移植相关问题