Hibernate 的两种配置

前言:不管是注解配置还是xml,都是告诉hibernate你想创建什么样的数据表,几张数据表中的关系是什么,仅此而已,剩下的不过就是hibernate的优化了。

所以从创建数据表的ddl语句和数据表的结构出发就可以很轻松地知道,hibernate需要哪些信息了。

一、xml配置

表名的配置:	用<class>标签。
		属性说明:name------其值是一个Java类表示生成该Java类对应的数据表。
			  table-----其值表示该Java类对应的数据表的表名
			  lazy------值为true或false,  表示是否开启懒加载模式
		说明:
			关于表的字段的,约束,键值等配置的标签都是<class>标签的子节点
主键:		用<id>标签
		属性:name------Java类中对应主键的属性名
		      column----表示该字段在数据表中的名称。
		子标签:
		      <generator>  用于指明序列生成的方式
普通字段:	用<property>标签
		说明,一般就用name和column两个属性,没有声明column时,其值就是name的值。

关系标签:
	<many-to-one>
	说明:
		在一对多的关系中用在多方。
	属性:
		name-------值为该类所持有的外键引用
		column-----外键名字段
		cascade----设置关系的维护方式

	<set> 在多对一的情况下,到一方的Java类中含有多方的集合SET通道时
	属性:name----该属性指向的是该集合属性的名称。
	子标签:
		<key column="" /><!-- column属性是配置多方外键名 -->
		<one-to-many class="" /><!--class属性值表示many方对应的Java类(注意多方含有外键)-->

注意:在默认的情况下凡是同过关系通道要想将关系的被维护方的瞬时态对象持久化----------别做梦了,除非用cascade="all"开启权限。
      关于权限的设置一般在关系的维护方。

  

二、注解配置

注解:
	注解持久化对象:@Entity
	注解表名	@Table
	注解主键	@Id
	注解序列生成器	@SequenceGenerator(name="",sequenceName="")
			@GeneratedValue(generator="")
	注解字段名:	@Column()

关系注解:
	一对多:@OneToMany
		说明:1. 该注解配置在一对多关系中的一方的集合属性上
		      2. 因为一方并不是外键的持有者

		@ManyToOne
		说明: 1. 因为多方是外键的持有者,所以对外键属性要声明:@JoinColumn(name="cid")来引入外键列

	多对多:@ManyToMany()
		parameter 说明:mappedBy="field which used to relate the foreign key is belong to  inverseObject", 声明了该参数的Entity不能声明@JoinTable
		描述:	声明了@ManyToMany()注解之后还应该声明哪些注解
			维护关系通道的参数

	注解通过字段声明中间表的方式:@JoinTable(name="table_name",joinColumns={@JoinColumn(name="stu_id")},inverseJoinColumns={@JoinColumn(name="cid")})
		说明:	该注解主要是用来维护外键关系的
			joinColumns		用来声明当前与对象所维护的外键
		      	inverseJoinColumns	to statement the foreign key which is related to inverse object 

questions:
	1.声明了关系型注解----对应方式,根据对应方式需要告诉hibernate哪些信息?
	2.关系维护方和被维护方的权限
	3.ORM模型的工作原理
	4.hibernate 中的多对多,一对一,一对多等关系,其实质就是数据库中的各种关联关系,关键是如何将数据库模型转化为域模型----在转化过程中的关键点是----哪一方持有哪一方的引用

  待续..........

时间: 2024-08-28 03:25:24

Hibernate 的两种配置的相关文章

Hibernate实现有两种配置,xml配置与注释配置

hibernate实现有两种配置,xml配置与注释配置. (1):xml配置:hibernate.cfg.xml (放到src目录下)和实体配置类:xxx.hbm.xml(与实体为同一目录中) <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "ht

SpringMVC两种配置理解----web.xml还有JavaConfig

最近因为在上javaEE的课程一直在学习Spring,在网上找了很多资料,发现大多数都是通过web.xml配置的spring,而通过javaConfig配置的比较少,本人自己尝试了两种配置方法. 开发环境Eclipse+Maven+Tomcat ----------------------------------------------------------- 首先我们要清楚Spring整个工作过程---> 盗用Spring in Action里的这张图片,我们可以看到整个流程:(如果想全面了

Spring整合Hibernate的两种方式

在使用spring注解整合hibernate时出现"org.hibernate.MappingException: Unknown entity: com.ssh.entry.Product“异常的问题. 最后找到了问题,总结一下 1.spring整合hibernate,取代*.hbm.xml配置文件  在applicationContext.xml文件中配置方式 <!-- 创建sessionFactory --> <bean id="sessionFactory&q

servlet的两种配置方式

在Servlet2.5规范之前,JavaWeb应用的绝大部分组件都通过web.xml文件来配置管理,Servlet3.0规范可通过Annotation来配置管理Web组件,因此web.xml文件可以变得更加简洁,这也是Servlet3.0的重要简化. 两种方式 (1),通过web.xml配置 [html] view plain copy      <servlet>           <servlet-name>GetApplication</servlet-name>

nginx的两种配置用户权限访问

linux中生成密码文件的命令一般有两种 opensslpasswd -crypt passwd之后会生成一个字符串,文件不需要 另一种是 htpasswd -c /etc/filename.db  username 这时候会显示用户名输入密码: 当系统显示没有htpasswd命令的时候可以在输入htpasswd后系统显示安装的软件(ubuntu) 最后贴出我自己的nginx的配置作为参考: server { listen       9200; server_name   xxxxxxxx;

thinkphp的钩子的两种配置和两种调用方法

thinkphp的钩子行为类是一个比较难以理解的问题,网上有很多写thinkphp钩子类的文章,我也是根据网上的文章来设置thinkphp的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十几次都没有成功,不过,我还是没有放弃,最后还是在一边调节细节,一边试验的过程中实现了钩子行为的设置.下面是我个人的设置经验,在这里跟大家分享一下. 个人做了两种设置,都试验成功了,一个简单点,在thinkphp的核心文件中模仿核心行为类添加了另一个行为类,下面是截图: 我的虚拟主机配置文件夹是D:/

visualvm远程监控jvm两种配置方法

参考:http://blog.itpub.net/17203031/viewspace-765810 一.Jstatd RMI远程监控方法 VisualVM在监控本地JVM的时候是很方便的.只要应用程序运行起来,我们就可以从VisualVM里面监控出来. 远程服务器上的JVM监控就需要一些额外的配置了.目前VisualVM支持两种监控方法:Jstatd方法和基于JMX的方法.我们先介绍Jstatd方法. Jstatd方法是利用后台的RMI守护进程来实现对远程JVM的监控. 1.查看一下JAVA_

IOC容器在web容器中初始化——(一)两种配置方式

参考文章http://blog.csdn.net/liuganggao/article/details/44083817,http://blog.csdn.net/u013185616/article/details/52186184. 最近在研究IOC容器在web容器中初始化的过程.阅读了源码,参照了很多文章,在这里记录一下. 使用的web容器为tomcat7.spring的jar包为4.3.7.RELEASE版本. 我们可以通过web.xml配置文件web容器中声明spring容器.有以下两

springboot之jackson的两种配置方式

springboot 针对jackson是自动化配置的,如果需要修改,有两种方式: 方式一:通过application.yml 配置属性说明:## spring.jackson.date-format指定日期格式,比如yyyy-MM-dd HH:mm:ss,或者具体的格式化类的全限定名 spring.jackson.deserialization是否开启Jackson的反序列化 spring.jackson.generator是否开启json的generators. spring.jackson