- 浏览: 98030 次
- 性别:
文章分类
最新评论
-
chinrui:
iamaj2eeprogrammer 写道顶一个 。。。。。。 ...
日志规范 -
iamaj2eeprogrammer:
顶一个 。。。。。。。。。。
日志规范 -
chinrui:
如果Eclipse安装过Android的开发插件,可能会有一定 ...
使用Ant编译生成Hadoop的Eclipse插件
Annotation使用两个foreign key做联合主键
1、 数据库里面的表结构
学生:(Id , Name)
课程:(Id , Name)
选课表:(Student_ID , Course_ID , Score)
2、 Student类
package com.edu.hpu; import java.util.HashSet; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.Table; @Entity @Table(name="_student") public class Student { private int id; private String name; private Set<Course> courses = new HashSet<Course>(); @Id @GeneratedValue 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; } @ManyToMany @JoinTable(name="_score" , joinColumns=@JoinColumn(name="student_ID"), inverseJoinColumns=@JoinColumn(name="course_ID") ) public Set<Course> getCourses() { return courses; } public void setCourses(Set<Course> courses) { this.courses = courses; } }
3、 Course类
package com.edu.hpu; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="_course") public class Course { private int id; private String name; @Id @GeneratedValue 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; } }
4、 Score类以及PK类
package com.edu.hpu; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="_score") public class Score { private int score; private PK pk; public int getScore() { return score; } public void setScore(int score) { this.score = score; } @Id public PK getPk() { return pk; } public void setPk(PK pk) { this.pk = pk; } }
package com.edu.hpu; import java.io.Serializable; import javax.persistence.Embeddable; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; @Embeddable public class PK implements Serializable { private Student student; private Course course; @ManyToOne @JoinColumn(name="student_ID") public Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } @ManyToOne @JoinColumn(name="course_ID") public Course getCourse() { return course; } public void setCourse(Course course) { this.course = course; } @Override public boolean equals(Object obj) { if(obj instanceof PK) { PK pk = (PK)obj; if(pk.getCourse().getId() == this.getCourse().getId() && pk.getStudent().getId() == this.getStudent().getId()) { return true; } } return false; } @Override public int hashCode() { return student.getName().hashCode() + course.getName().hashCode(); } }
5、 测试生成表类(Junit)
package com.edu.hpu; import java.util.Set; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class TestWork { private static SessionFactory sf = null; @BeforeClass public static void beforeClass() { Configuration conf = new Configuration().configure(); ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(conf.getProperties()).buildServiceRegistry(); sf = conf.buildSessionFactory(sr); } @Test public void testExport() { new SchemaExport(new Configuration().configure()).create(true , true); } @Test public void testSave() { Course co = new Course(); co.setName("C++"); Student st = new Student(); st.setName("qinrui"); st.setId(1); Score sc = new Score(); PK pk = new PK(); pk.setCourse(co); pk.setStudent(st); sc.setPk(pk); sc.setScore(98); Session session = sf.getCurrentSession(); session.beginTransaction(); session.save(co); session.save(st); session.save(sc); session.getTransaction().commit(); } @Test public void testGet() { Session session = sf.getCurrentSession(); session.beginTransaction(); Student st = (Student)session.get(Student.class, 6); Set<Course> courses = st.getCourses(); for(Course cou : courses) { System.out.println(cou.getName()); } session.getTransaction().commit(); } @AfterClass public static void afterClass() { sf.close(); } }
6、 Hiberante.cfg.xml配置
<?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> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property> <property name="connection.username">root</property> <property name="connection.password">mima</property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <property name="format_sql">true</property> <!-- Drop and re-create the database schema on startup --> <!--<property name="hbm2ddl.auto">update</property>--> <!--<mapping resource="org/hibernate/tutorial/domain/Event.hbm.xml"/>--> <!--<mapping resource="com/edu/hpu/Husband.hbm.xml" />--> <!-- <mapping resource="com/edu/hpu/Teacher.hbm.xml" /> <mapping resource="com/edu/hpu/Student.hbm.xml" /> --> <mapping class="com.edu.hpu.Student" /> <mapping class="com.edu.hpu.Course" /> <mapping class="com.edu.hpu.Score" /> </session-factory> </hibernate-configuration>
7、 生成的建表语句
create table _course ( id integer not null auto_increment, name varchar(255), primary key (id) ) create table _score ( score integer not null, course_ID integer, student_ID integer, primary key (student_ID, course_ID) ) create table _student ( id integer not null auto_increment, name varchar(255), primary key (id) ) alter table _score add index FKA89FA193A2A75DE0 (course_ID), add constraint FKA89FA193A2A75DE0 foreign key (course_ID) references _course (id) alter table _score add index FKA89FA19337241E94 (student_ID), add constraint FKA89FA19337241E94 foreign key (student_ID) references _student (id)
发表评论
-
SpringMVC与Mybatis集成开发环境搭建
2014-08-04 11:14 1193SpringMVC与Mybatis集成开发环境搭建 ... -
struts处理AJAX请求
2013-07-06 10:56 935struts处理AJAX请求 1、使用AJAX向stru ... -
struts里面的方法校验
2013-06-02 10:13 845struts里面的方法校验 一、全局方法检验 1、校验 ... -
struts多文件上传
2013-06-02 09:15 873struts多文件上传 1、文件载入页面 & ... -
struts中的文件上传
2013-06-01 20:19 975struts中的文件上传 1、上传页面代码 <b ... -
Spring AOP 简单使用
2013-05-04 17:30 1338Spring AOP 在beans.xml进行配置,声明aop ... -
Spring IoC Annotation 的简单使用
2013-05-04 17:22 1058Spring IOC Annotation 进行Annotat ... -
Spring IOC XML Configuration
2013-05-04 17:10 1236Spring Note Spring Introdution ... -
Spring DBCP 数据库连接池配置
2013-05-04 17:01 3209Spring dbcp 数据库连接池 ... -
Spring IOC(DI)模拟
2013-05-03 19:37 884Spring DI Simulation 解释:IOC Inv ... -
Hibernate 里面的1+N问题
2013-04-28 09:02 875Hibernate之1+N问题 1、 Category类 pa ... -
Hibernate 二级缓存举例(4.2 Final版)
2013-04-28 09:02 1187Hibernate 4.2里面的缓存 1、 hibernate ... -
HQL 简单使用二
2013-04-26 10:05 955HQL的简单使用2 1、 Category类 package ... -
hibernate HQL的简单使用一
2013-04-26 08:51 1067Hibernate中的HQL使用 1、 建立相应的关系表 Ca ... -
struts2 学习笔记
2013-04-25 08:07 1355Structs学习笔记 一、建立structs项目的时候需要 ... -
JSP 自定义标签
2013-04-24 22:47 878JSP自定义标签(<mytag:mylove /> ...
相关推荐
Java-Annotation使用大全 Java-Annotation使用大全 Java-Annotation使用大全
在Java的持久化框架Hibernate中,一对一(One-to-One)关联是常见的关系映射类型,它用于表示两个实体之间存在唯一的对应关系。本篇将详细讲解如何使用Hibernate进行一对一单向外键关联,并且该关联涉及到联合主键的...
本文是讲解的是hibernate3.2的主键生成方式,通过annotation来实现,详细的分析了主键在hibernate的生成以及在真实项目的运用。。。。
通过阅读《Hibernate_annotation_1to1_foreignKey》文档或博客,你可以更详细地了解如何配置和使用这种关联,包括示例代码、注意事项以及可能遇到的问题和解决方案。理解并熟练运用这些知识,能帮助你在使用...
在一对一的关联关系中,如果两个实体共享同一个主键,那么这种关联被称为共享主键的一对一关联。这意味着这两个实体的表在数据库中通过主键进行连接,一个实体的主键同时也作为另一个实体的外键。 在Hibernate中,...
#### 五、使用反射读取RUNTIME的Annotation信息 通过Java的反射机制,可以在运行时访问和处理注解信息,这对于框架和工具的开发尤其有用。 ```java Field field = clazz.getDeclaredField("fieldName"); ...
每个Annotation都有一个名称和零个或多个成员。成员是name=value对,类似于JavaBeans的属性,包含信息。 3. **Annotation类型**:Annotation类型是一种接口,定义了Annotation的结构和默认值。在Java中,通过`@...
赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc.jar; 赠送源代码:jakarta.annotation-api-1.3.5-sources.jar; 赠送Maven依赖信息文件:jakarta.annotation...
Annotation可以有多个参数,如`key()`, `value()`, `value1()`,并且参数可以是数组类型,如`String[] value()`,这样就可以传递一组值。 5. **默认值**: 通过`default`关键字,可以在Annotation定义中为参数...
在Java中,注解的处理通常分为两个阶段:编译时处理和运行时处理。编译时处理通常通过编写`Processor`实现Java编译器插件来完成,而运行时处理则可以在代码运行时通过反射API访问注解信息。 例如,在`...
### Annotation使用手册详解 #### 一、Annotation的基本概念 **Annotation** 在 Java 1.5+ 版本中被引入,作为一种与程序元素关联任何信息或元数据(metadata)的途径。从某种程度上看,Annotation 类似于修饰符,...
在"struts2 使用Annotation 配置的小例子"中,我们可能会看到以下几个核心的Annotation: 1. `@Action`: 这个Annotation用于标记一个方法作为Struts2的动作。你可以指定该动作的名称、结果类型、以及它将执行的类。...
Hibernate Annotation是Hibernate框架的一个扩展,它允许开发者直接在Java类和属性上使用注解(Annotations),来定义实体类与数据库表之间的映射关系。相比于XML配置,注解提供了一种更加内聚和直接的方式,使得...
【Annotation技术】是Java语言中的一个重要特性,引入于JDK5,主要目的是为程序元素(如包、类、方法、变量等)添加元数据,即附加信息,这些信息可以被编译器、IDE工具或者运行时系统使用。Annotation不会直接改变...
赠送jar包:jakarta.annotation-api-1.3.5.jar; 赠送原API文档:jakarta.annotation-api-1.3.5-javadoc.jar; 赠送源代码:jakarta.annotation-api-1.3.5-sources.jar; 赠送Maven依赖信息文件:jakarta.annotation...
在使用 Compass Annotation 时,需要进行基本的配置,包括 Compass 实例的创建、数据源的配置、以及启用 Annotation 映射支持。然后,在实体类上添加相应的注解,并在应用启动时进行初始化,让 Compass 扫描并加载...
### Java自定义注解Annotation的使用 #### 1. 前言 自从JDK 1.5引入了注解这一特性以来,它已经成为Java开发中的一个重要组成部分。注解最初是为了推动EJB 3.0的普及和发展而设计的,其目的是减少配置文件的使用,...
赠送jar包:javax.annotation-api-1.2.jar; 赠送原API文档:javax.annotation-api-1.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-1.2.pom;...