发表于: 2020-08-17 22:28:26
1 1395
今天完成的事情
1. 做了一下 hibernate整合spring
没跑起来,xml 配置着实有点难搞。用了一段时间的 Spring Boot 突然不适应 xml 了。
收获
1. Entity 与 Table 的区别
@Entity说明这个class是实体类,并且使用默认的orm规则,即class名即数据库表中表名,class字段名即表中的字段名。
如果想改变这种默认的orm规则,就要使用@Table来改变class名与数据库中表名的映射规则,@Column来改变class中字段名与db中表的字段名的映射规则。
如果不需要更改实体与数据库的映射的话是不需要使用 @Table 注解的。
2. 实体类与数据库字段的映射规则
如过在实体类中全是小写的话,那么创建的数据表字段名与类中的是一样的。
如果实体类中有大写,那么创建的字段名以下划线区分。
如实体字段:userName
创建的表字段:user_name
3. 两种映射方式
实体类注解:
@Entity
@Table(name="users")
public class Users {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="user_id")
private Integer user_id;
@Column(name="user_name")
private String user_name;
@Column(name="email")
private String email;
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
xml 配置
user.hbm.xml
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 建立类与表的映射 -->
<!-- class标签:用于映射类与表的关系 name :类的全路径 table:表名称 -->
<class name="org.example.learn.jpa.model.Users" table="users">
<!-- 建立类中属性与表中的字段映射 -->
<!-- 唯一标识 -->
<!-- 使用id的标签 配置唯一属性 -->
<!-- 在<id>标签中配置一个主键的生成策略. -->
<id name="user_id" column="user_id">
<generator class="native"/>
</id>
<!-- 普通属性 -->
<!-- property标签:映射类中的普通属性 name:类中的属性名称, column:表中字段名称 -->
<!--如果不写 column 属性,则默认使用 name 值作为数据库字段名-->
<!--
type:三种写法
* Java类型:java.lang.String
* Hibernate类型:string
* SQL类型:不能直接使用type属性,需要子标签<column>
* <column name="name" sql-type="varchar(20)"/>
-->
<property name="user_name" column="user_name" type="string"/>
<property name="email" column="email" type="string"/>
</class>
</hibernate-mapping>
今天还做了一下数据表的级联操作,它会自动生成外键。级联也有好几种设置模式,我还没弄明白,就先不说了。
遇到的问题
1. 学习曲线比较陡
一开始用的 Mybatis 的话所有的 SQL 我都是可以控制的,如果我想做连表的话要自己去写 SQL。
但是 JPA 最大的变化就是自动生成 SQL,如果不用点连表的复杂查询总觉得没必要学这个框架了,所以我现在还得补上不少的知识,无论是数据表的级联还是 Hibernate 的运行机制都得好好补补
明天的计划
1. 继续学习 Hibernate
评论