- 浏览: 246719 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (179)
- Spring3.0 (28)
- HIbernate3.5.6 (35)
- Struts2.1.8 (42)
- JSP (1)
- Servlet (0)
- JAVASE (16)
- JavaWeb (1)
- javaEE (0)
- SSH2整合 (0)
- EJB (0)
- Oracle (7)
- Ajax (7)
- Quartz作业调度框架 (6)
- jsValidationFramework (1)
- FCKeditor (1)
- ExtJS (29)
- JSF (0)
- JPA (0)
- JBoss Seam (0)
- JSON (0)
- Webservice (0)
- JQuery (1)
- Javascript (1)
- Css+DIV (0)
- Lunch (0)
- Linux (0)
- PHP (0)
- XML (1)
- Ibatis (0)
- DWR (0)
- DWZ (0)
最新评论
-
Nabulio:
good
Spring配置SessionFactory -
唤流年:
[color=red][/color] ...
Spring配置SessionFactory -
wangcl011:
Oracle通过数据泵网络导入另一个数据库,不生成DMP文件, ...
oracle命令导入dmp文件 -
rochou:
第一个Hibernate实现CRUD -
ningwuyu:
Entity 类是那个jar里面的
PropertyUtils MethodUtils用法
需求: 在T_STUDENTS表中 要将ID和NAME联合作为主键:
1.将id和name属性定义到一个主键类中:StudentPK 并重写hashCode()和equals()方法同时要继承Serializable接口
package com.zchen.hibernate.sxt.domain; import java.io.Serializable; public class StudentPK implements Serializable{ /** * */ private static final long serialVersionUID = -7880746333829652369L; 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 o){ if(o instanceof StudentPK){ StudentPK pk = (StudentPK)o; if(this.id == pk.getId() && this.name.equals(pk.getName())){ return true; } } return false; } @Override public int hashCode(){ return this.name.hashCode(); }*/ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + id; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; StudentPK other = (StudentPK) obj; if (id != other.id) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } }
2.定义实体类: Students 将主键类放到里面:
package com.zchen.hibernate.sxt.domain; public class Students { private StudentPK pk; public StudentPK getPk() { return pk; } public void setPk(StudentPK pk) { this.pk = pk; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } private int age; private String address; }
3.定义Students.hbm.xml配置文件
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.zchen.hibernate.sxt.domain"> <class name="Students" table="T_STUDENTS"> <composite-id name="pk" class="com.zchen.hibernate.sxt.domain.StudentPK"> <key-property name="id" column="ID"/> <key-property name="name" column="NAME"/> </composite-id> <property name="age" column="AGE"/> <property name="address" column="ADDRESS"/> </class> </hibernate-mapping>
4.定义配置文件:Hibernate.cfg.xml 略
<?xml version="1.0"?> <!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.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql:///db_czbk_hibernate</property> <property name="connection.username">root</property> <property name="connection.password">1234</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hbm2ddl.auto">create</property> <property name="current_session_context_class">thread</property> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <property name="show_sql">true</property> <mapping resource="com/zchen/hibernate/sxt/domain/Students.hbm.xml" /> </session-factory> </hibernate-configuration>
5.测试用例:
package com.zchen.hibernate.sxt.test; import org.hibernate.HibernateException; 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; import com.zchen.hibernate.sxt.domain.StudentPK; import com.zchen.hibernate.sxt.domain.Students; public class StudentsTest { private static SessionFactory sf = null; @BeforeClass public static void beforeClass(){ try { sf = new AnnotationConfiguration().configure().buildSessionFactory(); } catch (HibernateException e) { e.printStackTrace(); } } @Test public void addStduentTest(){ StudentPK pk = new StudentPK(); pk.setId(1); pk.setName("zchen"); Students s = new Students(); s.setAge(24); s.setAddress("北京"); s.setPk(pk); Session session = sf.getCurrentSession(); session.beginTransaction(); session.save(s); session.getTransaction().commit(); } @AfterClass public static void afterClass(){ if(sf != null){ try { sf.close(); } catch (HibernateException e) { e.printStackTrace(); } } } }
输出语句:
11:32:09,818 INFO SchemaExport:226 - Running hbm2ddl schema export
11:32:09,821 DEBUG SchemaExport:242 - import file not found: /import.sql
11:32:09,821 INFO SchemaExport:251 - exporting generated schema to database
11:32:09,822 DEBUG SchemaExport:377 - drop table if exists T_STUDENTS
11:32:09,879 DEBUG SchemaExport:377 - create table T_STUDENTS (ID integer not null, NAME varchar(255) not null, AGE integer, ADDRESS varchar(255), primary key (ID, NAME))
11:32:09,953 INFO SchemaExport:268 - schema export complete
Hibernate: insert into T_STUDENTS (AGE, ADDRESS, ID, NAME) values (?, ?, ?, ?)
发表评论
-
Hibernate 1+N 问题
2011-06-03 08:17 12061+N问题的描述:举例,多个主题(Topic)属于一个帖子( ... -
多对多双向关联
2011-06-02 21:38 999老师和学生: Annotation配置: packa ... -
多对多单向关联
2011-06-02 21:28 814老师和学生: Annotation配置: pack ... -
一对多和多对一双向关联
2011-06-02 20:42 1003一个组有多个用户 一个用户只能属于一个组 在用户表里面有组的外 ... -
一对多单向关联
2011-06-02 19:10 817组和用户 一个组有多个用户,一个用户只能属于一个组: 表结 ... -
多对一单向关联
2011-06-02 18:56 814组和人员: 一个组有多个人员,一个人员属于一个组 在用户表里 ... -
关联关系的联合主键映射
2011-06-02 18:24 1026丈夫和妻子 其中妻子表的主键由id和name组成 ,丈夫和妻子 ... -
枚举映射和不映射的属性配置
2011-06-02 17:54 927import java.util.Date; impor ... -
一对一单双向主键关联-xml
2011-06-02 17:45 1194用户表和用户信息表: 规定:用户信息表中的id主键由用户表生 ... -
一对一双向外键关联
2011-06-02 17:15 941妻子和丈夫: 在丈夫表里面有妻子的外键 学生和学生证: ... -
一对一单向外键关联
2011-06-02 17:01 1088一对一单向外键关联 分为Annotation和xml方式: ... -
Configuration取配置文件 以及取得Session的两种方法的区别
2011-06-02 12:55 1055在得到SessionFactory的时候要先取得配置文件:Hi ... -
联合主键--Annotation
2011-06-02 12:23 1305联合主键Annotation配置方法有三种: 1.将组件类注 ... -
Hibernate设置使用C3P0连接池
2010-12-18 16:37 9751.导入jar文件 2.修改hibernate.cfg.xm ... -
Hibernate设置使用Tomcat中的连接池
2010-12-18 16:31 10701.修改Tomcat的context.xml文件 <C ... -
hibernate.cfg.xml
2010-12-18 15:30 848<?xml version='1.0' encoding ... -
Session和SessionFactory的多线程问题
2010-12-06 15:20 1186Session:是非线程安全的,生命周期较短,代表一个和数据库 ... -
Hibernate的拦截器与监听器
2010-12-06 14:57 1049定义监听器并继承SaveOrUpdateEventListen ... -
Hibernate使用命名查询
2010-12-06 14:37 943命名查询:就是在配置文件里面定义好sql语句。 简单示 ... -
Hibernate使用本地SQL查询语句
2010-12-06 14:12 1104使用本地sql查询语句使用的是Query接口: Query ...
相关推荐
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...
2. Configuration.xml 里面 的<mapper resource="com/yihaomen/mybatis/model/User.xml"/>是包含要映射的类的xml配置文件。 3. 在User.xml 文件里面 主要是定义各种SQL 语句,以及这些语句的参数,以及要返回的类型...
第1课 课程内容 6 第2课 Hibernate UML图 6 第3课 风格 7 第4课 资源 7 第5课 环境准备 7 ...三、 联合主键 24 1、xml方式 24 2、annotation方式 27 第14课 Hibernate核心开发接口(重点) 29 ........
此程序由AvvaMobileNHibernateHelperKit修改而来.对Nhibernate1.2友好支持.修订了生成实体文件时的错误!生成映射时:主键的生成错误,实现了联合主键的xml生成
PRIMARY KEY(seckill_id,user_phone),/*联合主键*/ KEY idx_create_time(create_time) )ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='秒杀成功明细表' SHOW CREATE TABLE seckill\G;#显示表的创建信息 Mybatis两...
(联合主键)composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. 时间戳 (可选) 5.1.9. 属性 5.1.10. 多对一 5.1.11. 一对一 5.1.12. 组件(component), 动态...
5.1.5. (联合主键)composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. 时间戳 (可选) 5.1.9. 属性 5.1.10. 多对一 5.1.11. 一对一 5.1.12. 组件(component), 动态组件(dynamic-...
* 数据库设计:降低关联的复杂性、尽量不使用联合主键、ID 的生成机制、适当的冗余数据 四、HQL 优化 * HQL 的优化技巧同普通的 SQL 优化技巧一样 * HQL 可以很容易地在网上找到一些经验之谈 五、加载策略 * ...
外键是从某个表的一个字段指向另外一个表的主健字段,两个字段的类型和精度应该一致,外键的值必须在主键中存在 Q0030 在数据库中什么代表一条记录? 主健 Q0031 如何编写效率高的SQL语句? "1.根据查询条件建立...
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...
ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,Hibernate多表联合查询, ...