以用户评论模块为例分三部分介绍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配置文件与关联映射介绍相关推荐

  1. 【Hibernate步步为营】--关联映射之多对一

    上篇文章讨论了Hibernate的基本映射,一个实体类对应着一张表,在相应的Hibernate Mapping文件中使用<class>标签映射.并且实体类中的普通属性对应着表字段,使用&l ...

  2. 【Hibernate框架】关联映射(多对多关联映射)

    按着我们的总结行进计划,接下来,就是有关于多对多映射的总结了. 我们来举个例子啊,很长时间以来,房价暴涨不落,但是还有很多人拥有很多套房产,假如说,一个富豪拥有九套房产,家里人么准去住哪一套,我们就以 ...

  3. hibernate一对多关联映射

    一对多关联映射 映射原理 一对多关联映射和多对一关联映射的映射原理是一致的,都是在多的一端加入一个外键,指向一的一端.关联关系都是由多端维护,只是在写映射时发生了变化. 多对一和一对多的区别 多对一和 ...

  4. hibernate的数据关联映射

    数据关联映射分为:一对多.多对一,一对一,多对多. cascade属性 • save-update:在执行保存和修改是进行级联操作 • delete:在执行删除时进行级联操作 • all:在所有情况下 ...

  5. Hibernate一对多关联映射及cascade级联操作

    我们以客户(Customer)与订单(Order)为例 实体类创建 Order订单实体类 //订单-----多的一方 public class Order {private Integer id;pr ...

  6. hibernate(3)对象关联映射

    2019独角兽企业重金招聘Python工程师标准>>> 1.概述 2.关联关系 3.一对多关联关系 一个班级有很多学生,设置students属性,关联表字段,班级选用班级外键GID ...

  7. Hibernate笔记——9.关联映射(下)

    占坑 转载于:https://blog.51cto.com/mengcao/1692687

  8. Java三大框架之——Hibernate关联映射与级联操作

    什么是Hibernate中的关联映射? 简单来说Hibernate是ORM映射的持久层框架,全称是(Object Relational Mapping),即对象关系映射. 它将数据库中的表映射成对应的 ...

  9. Hibernate关联映射(一对多/多对多)

    版权声明:翀版 https://blog.csdn.net/biggerchong/article/details/84340105 3.  Hibernate关联映射 上接Hibernate持久化类 ...

  10. Hibernate一对多单向关联和双向关联映射方法及其优缺点

    一对多关联映射和多对一关联映射实现的基本原理都是一样的,既是在多的一端加入一个外键指向一的一端外键,而主要的区别就是维护端不同. 它们的区别在于维护的关系不同: 一对多关联映射是指在加载一的一端数据的 ...

最新文章

  1. java link 使用_使用 C 实现Java LinkList
  2. 在Kubernetes v1.8中使用RBAC
  3. java实现循环链表
  4. 读《代码整洁之道》前四章浅显印象 和 我所见的不整洁代码引以为戒
  5. 炫彩渐变液态海报设计,太skr了!
  6. LeetCode 3. 无重复字符的最长子串 (滑动窗口哈希表)
  7. 接口——从事物的共同点出发
  8. python数值类型和序列类型_Python基础(一):数值类型,序列类型
  9. git和github的基本使用
  10. Atitit 常见信息化系统类别erp mes crm cms oa 目录 1.  企业资源规划(ERP)、客户关系管理(CRM)、协同管理系统(CMS)是企业信息化的三大代表之作 1 2. 概
  11. 从delphi 10.3到delphi 10.4的改变实务
  12. obs源码分析【二】:录制功能剖析
  13. 图文教你选择和区别A卡和N卡
  14. 动态规划背包问题matlab,动态规划解决01背包问题
  15. php导出word文档图片不显示,word文档几种不显示图片的解决方法
  16. 30岁测试员在一家公司工作八年后,告别“体制化”终于跳槽,别再妄想靠公司养老了!
  17. 公寓宽带服务器无响应,利用RLDP协议解决网络环路故障
  18. 别让这些考场突发情况毁了你一整年的心血!!
  19. 水晶报表各版本比较及相关释疑v2
  20. 【回眸】RS485VSRS232,I2C,SPI特点、什么是PMIC、RTOS移植相关问题

热门文章

  1. 一个小问题:深度学习模型如何处理大小可变的输入
  2. 漆桂林:多模态知识图谱种类及其应用
  3. 半监督学习入门基础(二):最基础的3个概念
  4. 【损失函数】常见的损失函数(loss function)总结
  5. 【linux】常用命令之scp命令
  6. 分享 | 绝对值得一看的深度学习三巨头之一的Yoshua Bengio清华大学讲座视频
  7. 机器学习之问题建模(一)
  8. 《Effective Python 2nd》 读书笔记
  9. 人工神经网络之Python 实战
  10. 职场三剑客,助你从容闯职场