Hibernate中使用注解

Annotation在项目中的使用越来越多,同样hibernate中支持Annotation,如果在hibernate中使用注解,从而轻XML配置,从下面简单的小例子加以说明。

1、实体类Emp.java

package com.yy.hibernate.model;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
// 实体类
public class Emp {

	private int id;
	private String name;

	@Id
	// 主键
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}
2、hibernate.cfg.xml文件

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory >
		<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/hibernate</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.show_sql">true</property>
		<!-- <property name="hibernate.hbm2ddl.auto">update</property> -->
		<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
		
	<mapping class="com.yy.hibernate.model.Emp"/> <!--使用注解-->
	
	</session-factory>
</hibernate-configuration>
3、客户端
public class EmpTest {

	public static void main(String[] args) {
		
		//使用注解
		Configuration config = new AnnotationConfiguration().configure();
		SessionFactory factory = config.buildSessionFactory();
		
		Session session = factory.openSession();
		
		Emp emp = new Emp();
		emp.setId(11);
		emp.setName("yy");
		
		try{
			session.beginTransaction();
			session.save(emp);
			session.getTransaction().commit();
		}catch(Exception e){
			session.getTransaction().rollback();
		}finally{
			session.close();
			factory.close();
		}
	}
}
注意:

在该简单示例中,实体类和数据库表是对应的,字段也是统一的。

如果表名和实体类不一致,则需加如下注解:

@Table(name="_emp")
如果数据库表中字段名和实体类中字段名保持相同,默认在getXXX方法上加如下注解:

@Basic

如果数据库表中字段名和实体类中字段名不一致,则需在getXXX方法上加如下注解:

@Column(name="_name")
	public String getName() {
		return name;
	}

如果某个字段不想持久化,则则getXXX方法上加如下注解:

@Transient
	public String getName() {
		return name;
	}
对应的,如果在XML配置中不想持久化,则需要在hbm.xml文件中不配置该字段即可。

如果是枚举类型,则需要在getXXX方法上加如下注解:

@Enumerated(EnumType.ORDINAL)
	public Level getLevel() {
		return level;
	}
此时EnumType.ORDINAL映射字段为整形,如果为EnumType.STRING则映射为varchar类型。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值