/**
* cn.jbit.jta.entity.Message
* 打印消息 实体类
* 许晶晶
* 2014-3-7
*/
package cn.jbit.jta.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name = "TBL_MESSAGE")
public class Message {
@Id
@GeneratedValue
@Column(name = "MESSAGE_ID")
private Long id;
@Column(name = "MESSAGE_TEXT")
private String text;
@ManyToOne
@JoinColumn(name = "NEXT_MESSAGE_ID")
private Message nextMessage;
public Message() {
super();
}
public Message(String text) {
super();
this.text = text;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Message getNextMessage() {
return nextMessage;
}
public void setNextMessage(Message nextMessage) {
this.nextMessage = nextMessage;
}
}
hibernate.cfg.xml中Hibernate配置的一个变化:
<!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> <!-- ...Many property settings --> <!-- List of annotated classes --> <mapping class="cn.jbit.hibernate.entity.Message" /> </session-factory> </hibernate-configuration>还有一个修改的地方是HibernateUtil类
try {
sessionFactory = new AnnotationConfiguration().configure()
.buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
} 如果用一个Ant目标导出数据库Schema,那么就在build.xml文件中用<annotationconfiguration>取代<configuration>
注解元数据也可以是全局的,全局的注解元数据被放在名为package-info.java的文件中,它处在一个特定的包目录中。除了列出被注解的类之外,还需要添加包含全局元数据的
把这一步再深入,用使用JPA的代码代替加载和存储消息的原生的Hibernate代码。利用Hibernate Annotations和Hibernate EntityManager,可以创建可移植的和标准兼容的映射和数据访问代码。
第1个作用说明代码:
package cn.jbit.test;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.PACKAGE)
@Retention(RetentionPolicy.RUNTIME)
public @interface PkgAnnotation {
}
package-info代码:
@PkgAnnotation package cn.jbit.test;测试类:
package cn.jbit.test;
import java.lang.annotation.Annotation;
public class Client {
public static void main(String[] args) {
// 可能通过I/O操作或配置项获得包名
String pkgName = "cn.jbit.test";
Package pkg = Package.getPackage(pkgName);
// 获取包内注解
Annotation[] annotations = pkg.getAnnotations();
// 遍历注解数组
for (Annotation a : annotations) {
if (a instanceof PkgAnnotation) {
System.out.println(a);
}
}
}
}
第2个作用说明代码:
package-info类
@PkgAnnotation
package cn.jbit.test;
//声明一个包使用的公共类,强调的是包访问权限
class PkgClass{
public static void test(){
}
}
//包常量,只运行包内访问,适用于分“包”开发
class PkgConst{
public static final String PACKAGE_CONST = "ABC";
}
下面一篇是通过Hibernate EntityManger实现特殊的简化咯。
Hibernate实战_笔记9(JPA与Hibernate的区别),布布扣,bubuko.com
Hibernate实战_笔记9(JPA与Hibernate的区别)
原文:http://blog.csdn.net/com185272358/article/details/20728605