方式一:
po类Teacher
package com.hibernate.demo.po; import java.util.Date; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity @Table(name="teacher") public class Teacher { private TeacherPK pk; private String title; private String yourWifeName; private Date birthDate; private boolean good; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getYourWifeName() { return yourWifeName; } public void setYourWifeName(String yourWifeName) { this.yourWifeName = yourWifeName; } @Temporal(TemporalType.TIME) public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } public boolean isGood() { return good; } public void setGood(boolean good) { this.good = good; } @Id public TeacherPK getPk() { return pk; } public void setPk(TeacherPK pk) { this.pk = pk; } }
po 复合主键类TeacherPK
package com.hibernate.demo.po; import java.io.Serializable; import javax.persistence.Embeddable; @Embeddable public class TeacherPK implements Serializable { 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; } @Override public boolean equals(Object obj) { TeacherPK pk = (TeacherPK)obj; if(this.id==pk.getId() && this.name.equals(pk.getName())){ return true; }else{ return false; } } @Override public int hashCode() { return this.name.hashCode(); } }
测试方法:
package com.hibernate.demo.po; import java.util.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class TestTeacher { private static SessionFactory sf = null; @BeforeClass public static void beforeClass(){ sf = new AnnotationConfiguration().configure().buildSessionFactory(); } @Test public void testSave(){ Session session = sf.openSession(); session.beginTransaction(); TeacherPK pk = new TeacherPK(); pk.setId(1); pk.setName("nameStr"); Teacher teacher = new Teacher(); teacher.setPk(pk); teacher.setBirthDate(new Date()); session.save(teacher); session.getTransaction().commit(); } @AfterClass public static void afterClass(){ sf.close(); } }
方式二(比第一种配置简单):
po类Teacher
package com.hibernate.demo.po; import java.util.Date; import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity @Table(name="teacher") public class Teacher { private TeacherPK pk; private String title; private String yourWifeName; private Date birthDate; private boolean good; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getYourWifeName() { return yourWifeName; } public void setYourWifeName(String yourWifeName) { this.yourWifeName = yourWifeName; } @Temporal(TemporalType.TIME) public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } public boolean isGood() { return good; } public void setGood(boolean good) { this.good = good; } @EmbeddedId public TeacherPK getPk() { return pk; } public void setPk(TeacherPK pk) { this.pk = pk; } }
复合主键类TeacherPK
package com.hibernate.demo.po; import java.io.Serializable; public class TeacherPK implements Serializable { 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; } @Override public boolean equals(Object obj) { TeacherPK pk = (TeacherPK)obj; if(this.id==pk.getId() && this.name.equals(pk.getName())){ return true; }else{ return false; } } @Override public int hashCode() { return this.name.hashCode(); } }
测试代码不变。。。
方式三:
package com.hibernate.demo.po; import java.util.Date; import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.IdClass; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity @Table(name="teacher") @IdClass(value=TeacherPK.class) public class Teacher { // private TeacherPK pk; private int id; private String name; private String title; private String yourWifeName; private Date birthDate; private boolean good; @Id public int getId() { return id; } public void setId(int id) { this.id = id; } @Id public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getYourWifeName() { return yourWifeName; } public void setYourWifeName(String yourWifeName) { this.yourWifeName = yourWifeName; } @Temporal(TemporalType.TIME) public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } public boolean isGood() { return good; } public void setGood(boolean good) { this.good = good; } // @EmbeddedId // public TeacherPK getPk() { // return pk; // } // public void setPk(TeacherPK pk) { // this.pk = pk; // } }
此处省略TeacherPK和测试代码。。
相关推荐
基于Annotation的AOP实现是Spring框架的一个重要特性,它极大地简化了AOP的使用。在本篇文章中,我们将深入探讨基于Annotation的AOP实现,特别是动态代理的理念。 首先,了解什么是AOP。AOP的核心概念是“切面”...
Annotation是Java 5中引入的一种机制,允许开发者在代码中添加元数据,以供编译器、容器或其他对象使用。Annotation可以添加到包、构造函数、方法、变量等元素上,提供了更多的信息,以便于系统或容器配置变得更加...
基于Annotation的s2sh整合配置实现分页功能基于Annotation的s2sh整合配置实现分页功能基于Annotation的s2sh整合配置实现分页功能基于Annotation的s2sh整合配置实现分页功能基于Annotation的s2sh整合配置实现分页功能
然而,随着Java技术的发展,基于Annotation的Servlet配置逐渐成为主流,因为它提供了更加简洁、直观的编程模型。这篇博文"基于Annotation的Servlet配置"探讨了如何使用注解来配置Servlet,让我们深入理解这一现代Web...
首先,让我们详细了解这三个框架在基于Annotation的应用中的作用: 1. **Struts2**:作为MVC框架的一部分,Struts2通过Action类和结果视图来处理HTTP请求。在基于Annotation的实现中,我们可以使用`@Action`和`@...
总的来说,"S2SH整合基于Annotation"意味着在开发Java Web应用时,通过这三个主流框架的协同工作,结合Annotation,可以实现高效、灵活且易于维护的代码结构。这种整合方式在大型项目中非常常见,因为它能够提高开发...
在这个"基于Annotation的MVC框架SSH示例"中,我们将探讨如何使用注解(Annotation)来简化SSH框架的配置和实现。 1. **Spring框架**:Spring是核心容器,负责管理应用对象的生命周期和依赖注入。在传统的Spring配置...
本文是讲解的是hibernate3.2的主键生成方式,通过annotation来实现,详细的分析了主键在hibernate的生成以及在真实项目的运用。。。。
技术分享:详解Spring基于Annotation的依赖注入实现
综上所述,"ssh包(基于annotation)"代表的是Spring、Struts2和Hibernate三个框架在使用注解进行配置的应用方式。这种方式使得代码更具有表达力,降低了配置的复杂度,同时也提高了开发的灵活性和可维护性。在学习和...
这篇文档将介绍如何使用Hibernate注解来生成复合主键或嵌入式主键。 复合主键(Composite Key)是指由两个或更多个列共同构成的唯一标识,而嵌入式主键(Embedded Key)则是将主键字段嵌入到实体类内部。在不使用...
基于Annotation的SSH整合开发是一种更为现代和高效的开发方式。通过引入Spring的支持,配置Hibernate的SessionFactory以及集成Struts框架,我们可以实现一个灵活且易于维护的项目架构。这种整合不仅减少了XML配置的...
### 详解Spring 3.0基于Annotation的依赖注入实现 #### 概述 Spring框架作为一个广泛使用的Java开发框架,提供了强大的依赖注入(Dependency Injection, DI)能力,帮助开发者轻松管理和组织复杂的Java应用。随着...
【描述】中的"基于annotation"表明系统设计者选择了一种面向切面编程(AOP)的方式,通过在代码中直接添加注解来定义对象的行为和依赖关系。这样不仅简化了配置,还提高了开发效率,因为开发者无需离开代码编辑器去...
【标题】"extjs+s2sh基于annotation的理财系统"是一个综合性的IT项目,它结合了前端的ExtJS框架和后端的Struts2、Spring、Hibernate(S2SH)框架,并利用注解(Annotation)进行配置,构建了一个完整的理财管理系统...
【基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发】 这篇文档主要介绍了一个使用注解(Annotation)进行Struts2.0、Hibernate3.3和Spring2.5整合开发的教程。这种集成方式相比传统的XML配置,可以简化...