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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值