最近学习hibernate注解形式配置POJO类,将注解的解析记下来,以备以后使用。 例1....0; (10) (1) name 可选,列名(默认值是属性名) (2) unique 可选,是否在该列上设置唯一约束...注:一对一,则外键必须为唯一约束。...注:一对一,则关联表每个外键都必须是唯一约束。...指向主表的外键名:主表表名+下划线+主表主键列名 指向从表的外键定义为唯一约束,用来表示一对多的关联关系。
Hibernate框架的配置一般可以分为以下几个步骤: 1.添加基本的Hibernate Jar包 2.添加注解的Jar包 3.编写Hibernate.cfg.xml文件 4.编写POJO文件,并编写注释...> 不同数据库连接在Hibernate.cfg.xml中的配置不同,这里以MySQL为例。...如果你用的是其他数据库,你可以点击这里查看相对应的Hibernate.cfg.xml文件:Hibernate 连接MySQL/SQLServer/Oracle数据库的hibernate.cfg.xml文件...②如果你使用的是Oracle数据库,因为Oracle数据库不支持主键自增长,必须使用序列实现自增长。...连接Oracle时,在@Table注解中加入了catalog属性也会出现这个错误。
* 如果能够查找到对应的妻子信息就将其添加到Husband中的wife属性中,如果没有查找到那么设置wife属性为null即可,这个就是外连接 */ @Test public void TestGet...由于无论是一对多还是多对一的关系,外加都是One一方的主键,因此要将维护权交给One的一方,因此只需要在@OneToMany这个注解中添加mappedBy这个属性即可 由于外键是在One的一方添加的...(mappedBy="dormitory") //添加注解,由于是双向外键关联,必须添加mappedBy,由于外键就是One的一方的主键,因此这里的只需要在OneToMany中添加即可 public...One的一方的外键 在单向外键关联中,如果通过One的一方获取Many的一方数据,那么需要在One的实体类中添加Many的实体类的对象为其成员变量,同时在这个成员变量的get方法上方使用@OneToMany...-- 必须要配置的5大参数,4大参数,一个方言 其中的四大参数是连接JDBC必须的参数 这里的方言也是必须的 --> <property name="<em>hibernate</em>.connection.driver_class
我这里是用来修改外键约束的名称。其他的使用方法需要查看官方文档。...本来也应该有一个应用ManyToOne注解的article字段来表示评论所属的文章,但是为了演示单向的OneToMany映射,所以我故意不添加这个文章属性。...我们在文章实体类中添加如下一段,对应的Getter省略了: @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) private...单向的一对多映射并不高效,如果删除了某文章的某评论,Hibernate进行的操作是这样:首先删除关联表中该文章关联的所有评论,然后再将其他评论添加回关联表中,最后,根据orphanRemoval决定是否删除评论表中孤立的评论...需要注意在双向注解中,OneToMany需要额外一个参数,mappedBy,指定ManyToOne注解那一边的属性名,这样Hibernate才会明白这是一个双向注解。
1、在Order.hbm.xml中需要添加(建立订单对订单项的一对多的关系) <!...public class Role { @Id //配置主键 @GeneratedValue(strategy=GenerationType.IDENTITY) //自增策略...(fetch=FetchType.EAGER) //没有懒加载, @OneToMany(fetch=FetchType.LAZY) //使用懒加载, 由于不使用懒加载效率很低,所以我们默认都使用懒加载...`) REFERENCES `role` (`roleId`) ON DELETE NO ACTION ON UPDATE NO ACTION) 解决方案:在数据库里更改user_role表结构,就是添加约束...,就添加roleId的删除时进行级联操作 ALTER TABLE `hrms`.
2.3简单方便 JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity进行注释...@Basic 指定非约束明确的各个字段。 @Embedded 指定类或它的值是一个可嵌入的类的实例的实体的属性。 @Id 指定的类的属性,用于识别(一个表中的主键)。...@UniqueConstraint 指定的字段和用于主要或辅助表的唯一约束。 @ColumnResult 参考使用select子句的SQL查询中的列名。...@ManyToMany 定义了连接表之间的多对多一对多的关系。 @ManyToOne 定义了连接表之间的多对一的关系。 @OneToMany 定义了连接表之间存在一个一对多的关系。...我们使用postman来测试: 然后通过查询数据库来看一下结果: 我们可以看到成功插入了数据,并且观察表结构可以看到,agee是我们定义的column名称,id为自增。
用于表示该属性作为ID主键 @GeneratedValue 主键生成策略,@GeneratedValue(strategy=GenerationType.AUTO)表示主键自增长由实现jpa的框架来控制...,例如我们用hibernate实现的就是有hibernate来控制 GenerationType总共有四个: AUTO: TABLE:由一个表来维护主键,这个表记录上一次生成的主键,然后+1...uniqueConstraints选项用于设置约束条件,通常不须设置。...unique:表示该字段是否是唯一标识,默认为false。 length:表示该字段的大小,仅对String类型的字段有效。 ...@OneToMany 描述一个一对多的关联,该属性应该为集体类型,在数据库中并没有实际字段。
1.建立数据库连接(database connection) 在上篇文章中我们新建了一个Spring Boot应用程序,添加了jdbc和data-jpa等starters,以及一个h2数据库依赖,这里我们将配置一个...对于H2、HSQL或者Derby这类嵌入型数据库,只要在pom文件中添加对应的依赖就可以,不需要额外的配置。...)框架来简化这部分工作,最有名的是Hibernate,但是现在更火的好像是Mybatis。...this.lastName = lastName; } } } repository层:创建完实体类,还需要创建BookRepository接口,该接口继承自CrudRepository...最后,我们利用mvn spring-boot:run运行应用程序,观察下Hibernate是如何建立数据库连接,如何检测数据表是否存在以及如何自动创建表的过程。 ?
当然还有数据库连接的jar 配置好放在META-INF下面的persistence.xml com.jpaDemo.entity.Customer com.jpaDemo.entity.Order...-- 连接数据库的基本信息 --> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver...<em>OneToMany</em> 的 cascade 属性来修改默认的删除策略....//注意: 若在 1 的一端的 @<em>OneToMany</em> 中使用 mappedBy 属性, 则 @<em>OneToMany</em> 端就不能再使用 @JoinColumn 属性了. // @JoinColumn(name
jar hibernate-release-4.3.6.Final\lib\jpa*.jar echache需要的jar 当然还有数据库连接的jar 配置好放在META-INF下面的persistence.xml...-- 添加持久化类 --> com.jpaDemo.entity.Customer com.jpaDemo.entity.Order...-- 连接数据库的基本信息 --> ...来映射 1-n 的关联关系 //使用 @JoinColumn 来映射外键列的名称 //可以使用 @OneToMany 的 fetch 属性来修改默认的加载策略 //可以通过 @OneToMany...//注意: 若在 1 的一端的 @OneToMany 中使用 mappedBy 属性, 则 @OneToMany 端就不能再使用 @JoinColumn 属性了. // @JoinColumn(name
这就是一个典型的单向的一对一的关联关系,所谓的一对一其实就是指,主表中的一条记录唯一的对应于从表中的一条记录。但具体到我们的实体类中又该如何来写呢?...由于是一对一,所以要求外键列不能重复,指定unique唯一约束即可。 对比着表中的各个字段,再次体会下上述注解中的属性的各个值的意义。 ?...hibernate通过左连接将根据外键列的值和usercode表的主键值连接了两张表,于是我们可以通过usercode的主键一次性查到两张表对应的记录,最后为我们返回相应的实例。...七、双向的多对多的关联关系映射 双向的多对多关系关联的映射依然需要通过第三张辅助表来进行连接。...connect连接表,并将查到的usersex实例集注入userinfo的集合属性中。
> 在这个配置文件中,我们定义了数据库连接属性、连接池设置、SQL方言、SQL输出以及实体类的映射。...通过这些配置,Hibernate可以自动管理数据库连接并生成相应的SQL语句。 4. 实体类映射 实体类是Hibernate进行对象关系映射的核心。...可以通过@OneToMany、@ManyToOne、@OneToOne和@ManyToMany注解的cascade属性来实现。...> 8.3 实现业务逻辑 我们将实现一些基本的业务逻辑,例如创建用户、发布文章和添加评论。...Post post = createPost(user, "My First Post", "This is the content of my first post."); // 添加评论
-- 数据库的连接信息 --> <property name="<em>hibernate</em>.connection.driver_class" value="com.mysql.jdbc.Driver...jpa的注解里面 @ManyToOne <em>添加</em>属性cascade=CascadeType.PERSIST //jpa的一对多没有普通删除 // 级联删除 // jpa的注解里面 @<em>OneToMany</em>...unique : 是否<em>唯一</em> ....查询返回<em>唯一</em>结果操作 uniqueResult() getSingleResult() 查询都是返回一个<em>唯一</em>的结果。...-- 数据库的<em>连接</em>信息 --> <!
如果试图将空值(null)作为 first name 插入数据库表的话,就会触发数据库约束冲突,进而导致当前事务回滚。...有两种方式使类属性与数据表字段建立映射关系:一是在属性的 getter 方法上添加 @Column 注解(如上所示);二是直接在类属性上添加注解。...因此加载这些实体时不需要引入连接查询,但它带来的新问题是:在不知道具体的子类时,需要使用另外的 SQL 查询来确定它的信息。...一对多(OneToMany) 以上例 Person 实体为例,每个 Person 都有一个或多个手机,现在新添加一个实体 Phone: @Entity @Table(name = "T_PHONE")...此外,需要在 Person 中添加一个 Phone 对象的集合(List),并且在它的 getter 方法上加上注解 @OneToMany,因为一个 Person 可能拥有多个 Phone: @Entity
-- hibernate beg --> org.hibernate hibernate-core...-- hibernate end --> <!...,对于客户而言,具备了维护外键的作用 */ // 联系人 // 客户与联系人一对多关系,用@OneToMany表示 @OneToMany(targetEntity =...--2.创建数据库连接池 --> ...(需要添加到多表映射关系的注解上) cascade(配置级联) 级联添加:当保存一个客户的同时保存客户的联系人 级联删除:删除一个客户的同时删除客户的联系人 级联操作测试 首先修改配置文件applicationContext.xml
(List)getHibernateTemplate().find("from Movie"); } …… } 实现对DAO类(继承自基类...的实现步骤 (1)添加相关依赖 以下示例使用了如下依赖:Hibernate3.6、MySQL驱动、DBCP数据源、Spring DI和Spring ORM。...为了加强数据库连接的管理,我们还应该配置数据源(DataSource),使用数据源和连接池提供连接对象给SessionFactory,这里使用DBCP作为数据源。 <?...这里需要用到AOP和切面描述,因此需要在原来基础上添加Spring的切面依赖。 <!...GenerationType.IDENTITY) private int id; @Column(name="Name") private String name; @OneToMany
:学号、身份证号 代理主键:不具有业务含义字段作为主键(例如 自增id),比如:mysql自增主键,oracle序列生成的主键、uuid()方法生成的唯一序列串 建议:企业开发中使用代理主键!...比如:mysql的自增主键,oracle不支持主键自动生成。如果数据库支持自增建议采用。 sequence 代理主键。Hibernate根据底层数据库序列生成标识符。条件是数据库支持序列。...Hibernate采用128位的UUID算法来生成标识符。该算法能够在网络环境中生成唯一的字符串标识符。此策略可以保证生成主键的唯一性,并且提供了最好的数据库插入性能和数据库平台的无关性。建议采用。...一对一 原则有两种: 唯一外键对应:在任意一方添加外键来描述对应关系 主键对应:一方的主键作为另一方的主键 ?...instancebefore flushing: cn.itheima.oneToMany.Customer …………..
开发包http://www.springsource.org/download/community 一、先建立一个空的web的项目sshFrame,加载必须的包 1.添加struts2必备的包。...1.5.3.jar --spring所依赖的包 其他 asm-commons-3.3.jar Commons—pool.jar ,commons-dbcp.jar ----------DBCP数据库连接池...,Apache的jakarta组织开发 的,tomcat连接池也是dbcp(可选) cglib.jar----------------------------高效的代码生成工具, Hibernate用它在运行时扩展...一个JTA事务可以有多个参与者,而一个JDBC事务则被限定在一个单一的数据库连接),我暂时还没加,先备着 mysql-connector-java-5.1.18-bin.jar log4j-1.2.16....jar 二、添加配置文件 在struts包下struts\src\apps\blank\src\main\resources提供了空白的struts.xml文件,把它复制到项目的src下 web.xml
1.3 Hibernate Hibernate 框架可以将应用中的数据模型对象映射到关系数据库表的技术。 JPA 是规范,而Hibernate是JPA的一种实现框架。...它的 JPA 实现层就是采用 Hibernate 框架实现的。 ?...虽然 @Data 注解会为我们添加一个有参构造器,但因为之前添加了 @NoArgsConstructor 注解,所以有参构造器就没了。...(2)@OneToMany 在分析用户与部门之间关系时,会发现一个用户只能属于一个部门,而一个部门可以包含有多个用户。...@OneToMany 2. @JoinColumn(name = "department_id") 3.
给实体类添加适当的注释可以在程序运行时告诉Hibernate如何将一个实体类保存到数据库中以及如何将数据以对象的形式从数据库中读取出来。 ...-- 连接数据库相关的一些配置,都是Hibernate的,所以只需要把之前Hibernate配置文件中的内容拷贝过来即可 --> <property...unique: 表示该字段是否是唯一标识 , 默认为 false length: 表示该字段的大小 , 仅对 String 类型的字段有效。 ...optional: 是否允许该字段为 null, 该属性应该根据数据库表的外键约束来确定 , 默认为 true 。 ...@OneToMany(fetch=FetchType,cascade=CascadeType) @OneToMany 描述一个一对多的关联 , 该属性应该为集体类型 , 在数据库中并没有实际字段
领取专属 10元无门槛券
手把手带您无忧上云