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