关于Hibernate注解的使用(命名查询 本地查询)

配置Weapon.java,代码如下:

package com.hibernate.annotations.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityResult;
import javax.persistence.FieldResult;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedNativeQuery;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.SqlResultSetMapping;
import javax.persistence.Table;

@Entity
@Table(name = "WEAPON")
//通过注解的方式使用命名查询
@NamedQuery(name = "namedQuery",query="from Weapon where id < :id")

//通过注解的方式使用本地查询
@SqlResultSetMapping(name = "all_fields",entities={
		@EntityResult(entityClass= com.hibernate.annotations.entity.Weapon.class,
				fields={
					@FieldResult(name = "id",column="ID"),
					@FieldResult(name = "name",column="NAME"),
				}
		)
	}
)
@NamedNativeQuery(name = "nameeNativeQuery", query = "select * from WEAPON where id < :id",
		resultSetMapping="all_fields")

		
public class Weapon {

	@SequenceGenerator(name = "seq",allocationSize = 1,initialValue = 1,sequenceName = "seq_weapon_pk")
	@Id
	@Column(name = "ID")
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator = "seq")
	private int id;
	private String name;
	
	
	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;
	}
	
	
}

关于注解的测试举例,TestAnnotations.java,代码如下:
package com.hibernate.annotations.entity;

import java.util.Iterator;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;

public class TestAnnotations {

	public static AnnotationConfiguration config = new AnnotationConfiguration();
	public static SessionFactory sessionFactory ;
	public static String config_file = "/hibernate.cfg.xml";
	
	public static void main(String[] args) {
//		annotationTest1();
//		annotationTest2();
		annotationTest3();
	}
	
	public static void annotationTest1(){
		//获得配置文件信息
		config.configure(config_file);
		//创建session工厂
		sessionFactory = config.buildSessionFactory();
		//创建Session对象(注意:正常开发环境下,应该优先当前进程中的session)
		Session session = sessionFactory.openSession();
		
		//开启事务
		Transaction tran = session.beginTransaction();
		Weapon weapon = new Weapon();
		weapon.setName("屠鹰刀");
		session.save(weapon);
		tran.commit();
		
		session.close();
		
	}
	//使用命名查询进行数据查询
	public static void annotationTest2(){
		//获得配置文件信息
		config.configure(config_file);
		//创建session工厂
		sessionFactory = config.buildSessionFactory();
		//创建Session对象(注意:正常开发环境下,应该优先当前进程中的session)
		Session session = sessionFactory.openSession();
		

		Query query = session.getNamedQuery("namedQuery");
		query.setParameter("id", 100);
		List<Weapon> list = query.list();
		Iterator<Weapon> it = list.iterator();
		while(it.hasNext()){
			Weapon w = it.next();
			System.out.println(w.getId() + "\t" + w.getName());
		}
		session.close();
		
	}
	
	//使用本地查询进行数据查询
	public static void annotationTest3(){
		//获得配置文件信息
		config.configure(config_file);
		//创建session工厂
		sessionFactory = config.buildSessionFactory();
		//创建Session对象(注意:正常开发环境下,应该优先当前进程中的session)
		Session session = sessionFactory.openSession();
		

		Query query = session.getNamedQuery("nameeNativeQuery");
		query.setParameter("id", 100);
		List<Weapon> list = query.list();
		Iterator<Weapon> it = list.iterator();
		while(it.hasNext()){
			Weapon w = it.next();
			System.out.println(w.getId() + "\t" + w.getName());
		}
		session.close();
		
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值