Hibernate中实体类使用注解
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Data;
@Entity
@Table(name="sys_user")
@Data
public class User {
@Id
private Long user_id;
private String user_code; //登录名
private String user_name; //昵称
private String user_password;//密码
private Character user_state;
public User() {
super();
}
}
映射规则:
1. 实体类必须用 @javax.persistence.Entity 进行注解;
2. 必须使用 @javax.persistence.Id 来注解一个主键;
3. 实体类必须拥有一个 public 或者 protected 的无参构造函数,之外实体类还可以拥有其他的构造函数;
4. 实体类必须是一个顶级类(top-level class)。一个枚举(enum)或者一个接口(interface)不能被注解为一个实体;
5. 实体类不能是 final 类型的,也不能有 final 类型的方法;
6. 如果实体类的一个实例需要用传值的方式调用(例如,远程调用),则这个实体类必须实现(implements)java.io.Serializable 接口。
将一个 POJO 的 Java 类映射成数据库中的表如此简单,这主要得益于 Java EE 5种引入的 Configuration by Exception 的理念,这个理念的核心就是容器或者供应商提供一个缺省的规则,在这个规则下程序是可以正确运行的,如果开发人员有特殊的需求,需要改变这个默认的规则,那么就是对默认规则来说就是一个异常(Exception)。
如上例所示:默认的映射规则就是数据库表的名字和对应的 Java 类的名字相同,表中列的名字和 Java 类中相对应的字段的名字相同。
现在我们可以改变这种默认的规则:
清单 2. 使用 @Table 和 @Column 注解修改映射规则
hibernate.cfg.xml
其中需要,没有配置扫描时
<mapping class="cn.ulearning.domain.User"/>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--
## MySQL
## hibernate方言配置:dialect
SQL99标准: 数据库的sql语句都是基于该标准.但是不同数据库会进行各自拓展.为准确的生成sql语句.需要告诉hibernate使用的是哪款数据库
|- MYSQL: limit ?,?..
|- SQLServer: top 10...
|- Oracle: Rownumber 分页..
#hibernate.dialect org.hibernate.dialect.MySQLDialect(mysql选择方言时选最短的)
#hibernate.connection.driver_class com.mysql.jdbc.Driver
#hibernate.connection.url jdbc:mysql:///test
#hibernate.connection.username gavin
#hibernate.connection.password
-->
<!-- 一.必选配置5个 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate1</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!--
## print all generated SQL to the console
// 打印所有生成的sql语句到控制台
hibernate.show_sql true
## format SQL in log and console
// 格式化sql语句
hibernate.format_sql true
-->
<!-- 二.可选配置3个 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<!--
## auto schema export
//自动建表. 会在hibernate启动时自动创建.
#hibernate.hbm2ddl.auto create
|- (不常用)无论表是否存在,每次启动时都会自动创建表结构.
#hibernate.hbm2ddl.auto create-drop
|- (不常用)无论表是否存在,每次启动时都会自动创建表结构.每次关闭前会删除表结构.
#hibernate.hbm2ddl.auto update
|- (常用)如果没有表,会创建表.如果有表与映射不一致.会修改表结构.
#hibernate.hbm2ddl.auto validate 通常用于手动创建表时,校验表结构是否正确.
|- (不常用) 不会自动创建表.如果表有问题,或表不存在.在启动时会抛出异常提示.
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 配置getCurrentSession方法
指定session与线程绑定
-->
<property name="hibernate.current_session_context_class">thread</property>
<!-- 三.映射文件引入
填写相对路径.相对于src目录.
-->
<mapping class="cn.ulearning.domain.User"/>
</session-factory>
</hibernate-configuration>
部分参考:https://www.cnblogs.com/softidea/p/6216722.html
https://blog.csdn.net/u013615806/article/details/39755971