hibernate
FixedStarHaHa
这个作者很懒,什么都没留下…
展开
-
(20)cache
需要引入jar包:ehcache-1.2.3jar //类和(15)QL1中同 需要加ecache.xml文档 //一个session查询两次相同的内容,会发一次select语句--即支持一级缓存 @Test public void testCache1() { Session session = sf.openSession(); session原创 2017-11-14 11:56:49 · 206 阅读 · 0 评论 -
(19)list OR iterator
//类在(15)QL1中/* * 现阶段:用list即可。!!!! */ /*list:直接获取对象 * select category0_.id as id0_,category0_.name as name0_ from Category category0_ */ @Test public void HQ_list(原创 2017-11-14 11:41:32 · 152 阅读 · 0 评论 -
(18)1+N问题
1+N问题描述 1+N:官方意思:每当查询出n条记录之后,每条数据会关联的查询1次它的关联对象。 我的理解是,原本所有的信息可以一次性查询出来的,也就是简单的join连表查询,但是hibernate会先*查询1次当前对象,然后当前对象里面的n个关联对象会再次访问数据库n次。* category topic 是onetomany的关系,在topic中设置了单向的原创 2017-11-14 11:34:50 · 337 阅读 · 0 评论 -
(17)QBC、QBE
QBC: @Test public void HQ_1() { Session session=sf.getCurrentSession(); session.beginTransaction(); //Criteria:标准、准则、约束 Criteria c=session.createCriteria(Topic.cla原创 2017-11-14 11:26:26 · 262 阅读 · 0 评论 -
(16)QL2:模糊查询(%,_)、常用的函数、group by、having、子查询、update 、delete、native
/* * 功能:获取没有回复的帖子 * is empty and is not empty 判断一个集合是否为空 select topic0_.id as id2_, topic0_.category_id as category3_2_, topic0_.name as name2_ from Topic topic0_原创 2017-11-14 11:17:41 · 359 阅读 · 0 评论 -
(15)QL1:asc、desc、获取一定范围(用占位符)、获取一条记录中的若干字段、多次导航、左外连接、uniqueResult、聚合函数、is null
板块和主题:一对多 一个板块对应多个主题,一个主题只属于一个板块 * 主题和回复:一对多 一个主题对应多个回复 一个回复只属于一个主题* * 现在只是建立单向联系* Category类@Entitypublic class Category { private int id; private String name; @Id @GeneratedValue原创 2017-11-14 11:03:39 · 281 阅读 · 0 评论 -
(14)学生、分数、课程【一对多,多对多练习】
需求:通过分数可以找到课程,通过分数可以找到学生,通过学生可以找到课程。 分析关系映射: 一个学生,对应多个分数(一个分数只属于一个学生),根据需求,应该在分数中设manytoone 一个课程,会有多个成绩(一个成绩只属于一个课程),根据需求,应该在分数中设manytoone 一个学生会有多门课程,一个课程也会有多个学生,因为不要求课程中找到所有的学生,所以在学生端设manytomany。原创 2017-11-14 10:14:04 · 2810 阅读 · 0 评论 -
(13)树状结构
树状图是一种数据结构 ,它由n个有限节点组成一个具有层次关系的集合。每个节点有0或者多个子节点,没有父节点的节点是根节点,每个非根节点只有一个父节点,除了根节点外每个子节点可以分为多个不相交的子树。树种每个节点是相同的数据类型。 在日常生活中,也有许多这样的例子,比如一个总公司,可以有多个子公司,一个子公司又会有多个部门,因为每个子节点只能有一个父节点,所以上下层之间的关系是onetomany 和原创 2017-11-14 09:27:46 · 314 阅读 · 0 评论 -
(12)映射继承关系三之连接的子类(@Inheritance(strategy=InheritanceType.JOINED))
这种方式:父类存放子类和父类的公共字段, 父类和子类中存在一一对应的关系,子类的id参考父类的id@Entity@Inheritance(strategy=InheritanceType.JOINED)public class Person { private int id; private String name; @Id @GeneratedValue p原创 2017-11-13 18:30:29 · 4877 阅读 · 0 评论 -
(11)映射继承关系二之每个类对应一张表(@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
这种策略支持双向的一对多关联,这里不支持IDENTITY生成器策略。因为存在多态查询,所以id在继承关系的表中必须是唯一的。这就意味着不能用AUTO和IDENTITY生成器。 在mysql中,只能用生成表id来使得多个表的id保持不同。因为父类中含有共同的属性,简单来讲id同,就在父表中,所以子表不用再写生成表了。在实体中,每个表都含有父类及子类特有的属性字段。 person类@Entity@原创 2017-11-13 17:52:50 · 3162 阅读 · 0 评论 -
(10)映射继承关系一之继承关系都映射在一张表中(@Inheritance(strategy=InheritanceType.SINGLE_TABLE))
EJB3支持三种类型的继承映射: • 每个类一张表(Table per class)策略: 在Hibernate中对应元素: • 每个类层次结构一张表(Single table per class hierarchy)策略:在Hibernate中对应元素 • 连接的子类(Joined subclasses)策略:在Hibernate中对应 元素 一、每个类层次结构一张表【整个继承层次结构中原创 2017-11-13 17:11:17 · 1509 阅读 · 0 评论 -
(9)ManyToMany-CRUD
老师与学生是多对多的关系,一个老师可以教多个学生,一个学生也可以被多个老师教 student类@Entitypublic class student { private int id; private String name; private Set<teacher> ts=new HashSet<teacher>(); @Id @GeneratedValue原创 2017-11-13 16:44:50 · 227 阅读 · 0 评论 -
(8)集合映射:list(@OrderBy)、map(@MapKey、map遍历方法)
通常情况下在一对多中用set即可,但是也可以用list、map一、list :在Javaee中他是有序表,所以有@OrderBy注解,这个注解的含义是一对多端输出时,可以按照多端某个字段排序输出,建表语句没有任何影响,只是从一端输出多端时,会排序输出,在默认情况下,是按照主键升序输出Group类@Entity@Table(name="_Group")public class Group {原创 2017-11-13 16:08:01 · 773 阅读 · 0 评论 -
(7)onetomany双向:CURD
一、Save Group类@Entity@Table(name="_Group")//对表重命名(group是关键字,不能作为表名,所以要对其重命名)public class Group { private int id; private String name; private Set<User> user=new HashSet<User>(); /*原创 2017-11-12 16:25:59 · 252 阅读 · 0 评论 -
(6)ManyToMany单向、双向:@JoinTable
一、manytomany单向 单向是指类层面,在下面例子中老师类可以知道要教哪些学生,学生不知被哪些老师教 **需要用到连接表**@JoinTable(name="t_s", joinColumns={@JoinColumn(name="teacher_id")},inverseJoinColumns={@JoinColumn(name="student_id")} )原创 2017-11-12 15:06:56 · 7711 阅读 · 1 评论 -
(5)OneToMany单向、双向manytoone
一、OneToMany单向 OneToMany说明是一个组知道有哪些成员,而成员不知道自己是哪个组(这是类层面的理解)。数据库方面还是多端(User)有外键属性。 若两个表中只写OneToMany,则必须写@JoinColumn(name=”groupId”),否则hibernate会当成多对多建立中间表 Group(一端)/* * 一对多,即在一端加 * 并且不需要在多端加外键。 *原创 2017-11-12 14:23:55 · 1800 阅读 · 0 评论 -
(4)OneToOne联合单向外键关联: @JoinColumns
Wife中是联合主键 在利用@IdClass(WifePK.class)方式时,主键类(WifePK)中的属性和Wife中的属性要相同@Entity@IdClass(WifePK.class)public class Wife { private int id; private String name; @Id public int getId() {原创 2017-11-12 13:18:08 · 1238 阅读 · 0 评论 -
(3)OneToOne简单外键关联
一、OneToOne单向外键关联 **解释单向: 在本例中,husband类中有wife对象(映射到表中是husband中有wife的外键),在数据库获取husband时,会获取到wife,即husband知道谁是它的wife;当在数据库获取wife时,并不知道它的husband是谁** ①Husband/* * 在生成的husband表中,主键是id 外键是wife中的id(wifeid原创 2017-11-12 11:54:41 · 1909 阅读 · 0 评论 -
(2)id:单个属性(AUTO、Table)联合主键三种实现方式
一、单个主键@Entity //从这个包(javax.persistence.Entity)可以看出,是个标准,不依赖于hibernate//@Table(name="_Teacher") //当model类和数据库的表名,不一致时,应该在这里指定。在这里类名为:teacher,表名是:_Teacher//生成一个表名是GENERATOR_TABLE的表,有两个字段pk_key、pk_value原创 2017-11-12 10:42:36 · 5924 阅读 · 0 评论 -
(1)helloworld:@Table、@Column、@Transient、@Temporal、@Enumerated
一、需要配置hibernate.cfg.xml文件<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge原创 2017-11-11 21:46:30 · 551 阅读 · 0 评论