hibernate使用註解

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章