Hibernate 系列教程4-单向多对一】的更多相关文章

主要讲解inverse和cascade的用法 cascade定义的是关系两端对象到对象的级联关系: 而inverse定义的是关系和对象的级联关系(管理外键的值). inverse 属性默认是false的,就是说关系的两端都来维护关系. 在双向多对一里面配置到一方的集合属性上面,inverse=true,表示关系的维护(外键的值)由对方(多方)来管理 cascade all : 所有情况下均进行关联操作. none:所有情况下均不进行关联操作.这是默认值. save-update:在执行save/…
项目图片 hibernate.cfg.xml <mapping resource="com/jege/hibernate/one/way/manytoone/User.hbm.xml" /> <mapping resource="com/jege/hibernate/one/way/manytoone/Dept.hbm.xml" /> 映射文件 User.hbm.xml <?xml version="1.0"?>…
双向多对多inverse配置 如果关系两边都使用默认inverse=false配置,表示关系两边都可以管理中间表的数据 关系其中一边设置inverse=true配置,表示自己放弃管理中间表关系,由对方来管理 如果关系两边都使用默认inverse=true配置,表示关系两边都不管理中间表,是不能这样配置的 hibernate.cfg.xml <mapping resource="com/jege/hibernate/two/way/manytomany/User.hbm.xml"…
双向多对多的ddl语句 同单向多对多表的ddl语句一致 Student package com.jege.jpa.many2many; import java.util.HashSet; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyTo…
JPA中的@ManyToOne 主要属性 - name(必需): 设定"many"方所包含的"one"方所对应的持久化类的属性名 - column(可选): 设定one方的主键,即持久化类的属性对应的表的外键 - class(可选): 设定one方对应的持久化类的名称,即持久化类属性的类型 - not-null(可选): 如果为true,,表示需要建立相互关联的两个表之间的外键约束 - cascade(可选): 级联操作选项,默认为none 单向多对一(@ManyT…
JPA中的@ManyToMany @ManyToMany注释表示模型类是多对多关系的一端. @JoinTable 描述了多对多关系的数据表关系. name 属性指定中间表名称 joinColumns 定义中间表与Teacher 表的外键关系 inverseJoinColumns属性定义了中间表与另外一端(Student)的外键关系 单向多对多表的ddl语句 CREATE TABLE `t_student` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `s…
pom.xml <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>${hibernate.version}</version> </dependency> Product /** * @author JE哥 * @email 1272434821@qq.com * @…
自关联:本质还是原来双向一对多,原来要配置两个类,现在全部都配置在一个类里面 Employee public class Employee { private Long id; private String name; // 多对一: 多个员工对一上级 private Employee manager; // 一对多:一个领导有多个下级 private Set<Employee> children = new HashSet<Employee>(); Employee.hbm.xm…
双向一对一 一对一主要用在 一个一方需要的信息比较少,比如注册的登录信息 另一个一方存储的信息比较多,比如注册之后用户填写的详细信息 实现方式常用的主要有2种: java模型都是一样,其中一个映射文件有所不同 hibernate.cfg.xml <mapping resource="com/jege/hibernate/two/way/onetoone/User.hbm.xml" /> <mapping resource="com/jege/hibernat…
在二级缓存配置成功的基础上进行查询缓存配置 Product public class Product { private Long id; private String name; Product.hbm.xml <class name="Product"> <id name="id"> <generator class="native" /> </id> <property name=&qu…
Product public class Product { private Long id; private String name; Product.hbm.xml <class name="Product"> <id name="id"> <generator class="native" /> </id> <property name="name" /> &l…
Employee public class Employee { private Long id; private String name; HourlyEmployee public class HourlyEmployee extends Employee { private Double rate; SalariedEmployee public class SalariedEmployee extends Employee { private Double salary; Employe…
Employee public class Employee { private Long id; private String name; HourlyEmployee public class HourlyEmployee extends Employee { private Double rate; SalariedEmployee public class SalariedEmployee extends Employee { private Double salary; Employe…
Employee public class Employee { private Long id; private String name; HourlyEmployee public class HourlyEmployee extends Employee { private Double rate; SalariedEmployee public class SalariedEmployee extends Employee { private Double salary; Employe…
Single Table策略 通过 discriminator鉴别器来区分是父类还是子类 Employee public class Employee { private Long id; private String name; HourlyEmployee public class HourlyEmployee extends Employee { private Double rate; SalariedEmployee public class SalariedEmployee exte…
组成关系 在一个员工模型里面需要存入 员工公司所在地址的城市,街道 员工籍贯所在的城市,街道, 此时可以抽取城市,街道变成一个模型即是组成关系 Employee public class Employee { private Long id; private String name; // 公司的地址 private Address comAddress; // 籍贯所在地 private Address homeAddress; Employee.hbm.xml <class name="…
复合主键 复合主键的意思就是2个字段同时为主键 不使用无业务含义的自增id作为主键 Airline package com.jege.hibernate.compositeid; import java.io.Serializable; //使用复合主键的持久化类需要实现serializable接口和覆盖equals().hashCode()方法. public class Airline implements Serializable{ private String startCity; pr…
工程截图 hibernate.cfg.xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factor…
第1步:通过eclipse新建1个java maven项目. 选择file–>new–>other–>MAVEN PROJECT选项 第2步:New Maven project 选择模版:Artifact Id:maven-archetype-quickstart 包名groupId:com.jege.hibernate 工程/模块名称:Artifact Id:hibernate-single-table 第3步:修改pom.xml如下 <project xmlns="h…
你还在为不知道怎样正确使用Hibernate而纠结吗 你还在为不知道怎样配置映射文件而郁闷吗 枚举单例(Enum Singleton) 是实现单例模式的一种方式而已,不过写法简单,创建枚举默认也是线程安全的,比较好用. package com.jege.hibernate.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.Stand…
JPA中的@OneToMany @Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface OneToMany { Class targetEntity() default void.class; CascadeType[] cascade() default {}; FetchType fetch() default EAGER; String mappedBy() default ""; boolean orphan…
引导目录: Hibernate 系列教程 目录 本篇导航: 为什么学习框架技术 框架的概念 主流框架的介绍 1.为什么学习框架技术 如何制作一份看上去具有专业水准的PPT文档呢?一个简单的方法就是使用Microsoft PowerPoint的模板功能,如图: 使用模板新建出来的文档已经有了一个PPT的“架子”,我们字需要把必要的信息像“填空题”一样填写进去就可以了,如图: 思考一下,使用PPT模板制作PPT有那些好处? 使用PPT模板制作文档的有点如下: (1)不用考虑布局.排版等问题,提高了效…
引导目录: Hibernate 系列教程 目录 昨晚喝多了,下午刚清醒,继续搞Hibernate.走起. 觉得还行的话,记得点赞哈,给我这个渣渣点学习的动力.有错误的话也请指出,省的我在错误上走了不归路.呵呵. 本篇目录: 数据持久化概念 Hiberante框架及ORM2.1. Hibernate框架2.2. 什么是ORM2.3. Hibernate框架的优缺点及其适用场合 2.4.1 Hibernate框架的优点 2.4.2 Hibernate框架的缺点2.4. Hibernate环境搭建2.…
引导目录: Hibernate 系列教程 目录 康姆昂,北鼻,来此狗.动次打次,Hibernate继续走起. 目录: 使用Hibernate实现按主键查询 使用Hibernate实现数据库的增.删.改操作2.1 使用Hibernate实现增加操作2.2 使用Hibernate实现修改.删除操作 2.2.1 使用Hibernate实现修改操作 2.2.2 使用Hibernate实现删除操作 技能训练 为工程准备了Hibernate环境后,就可以通过Hibernate API操纵数据库.Hibern…
引导目录: Hibernate 系列教程 目录 前言: 通过上一篇的增删改查小练习之后,咱们大概已经掌握了Hibernate的基本用法. 我们发现,在调用Hibernate API的过程中,虽然Hibernate里面为咱们提供了很多的类,但是常用的类只有很少的那么几个. 下面,一起着重地看一下其中配置相关的类 - Configuration & SessionFactory. 目录: Configuration 类 (负责管理Hibernate的配置信息) SessionFactory 类 (负…
引导目录: Hibernate 系列教程 目录 前言: Session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库的存取都与Session息息相关. 就如同在编写JDBC时需要关心Connection的管理,以有效的方法创建.利用与回收Connection,以减少资源的消耗,增加系统的执行效能一样,有效的Session的管理也是Hibernate应用时需要关注的焦点. 本篇目录: 使用threadLocal变量 Session的缓存 1. 使用threadLocal变量 S…
引导目录: Hibernate 系列教程 目录 Java对象通过new命令进行创建,Java虚拟机(Java Virtual Machine,JVM)会为新的Java对象在内存中开辟一个新空间以存放次对象. 只要此对象被引用变量引用,它就一直在内存中存在. 当然,对象不被任何引用对象引用时,JVM就会通过垃圾回收机制消除次对象以释放内存. 例如以下代码: Object o = new Object(); // 一个Object对象实例被变量o引用,JVM将为它开辟空间 引用的效果如图所示: 然后…
引导目录: Hibernate 系列教程 目录 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久化的角度关注应用对象的生命周期. 持久化声明周期是Hibernate中的一个关键概念,正确地理解生命周期,可以更好地了解Hibernate的实现原理,掌握Hibernate的正确用法. Hibernate框架通过Session来管理Java对象的状态,在持久化生命周期中,Java对象存在着如下三种状态: 瞬时状态(Transient) 通过new创建对…
需求 需要对一个页面进行数据抓取,并导出doc文档 html解析器 jsoup 可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据. htmlparser 提供了线性和嵌套两种方式来解析网页,主要用于 html 网页的转换(Transformation) 以及网页内容的抽取 (Extraction). 比较一下 jsoup可以直接拿,类似jquery的选择器一样用起来比较好上手.htmlparser结构简…
后台验证 开发项目过程中,后台在很多地方需要进行校验操作,比如:前台表单提交,调用系统接口,数据传输等.而现在多数项目都采用MVC分层式设计,每层都需要进行相应地校验. 针对这个问题, JCP 出台一个 JSR 303-Bean Validation规范 ,而Hibernate Validator 作为Bean Validation的参考实现,提供了JSR 303规范中所有内置constraint的实现,除此之外还有一些附加的constraint. Hibernate Validation的使用…