hibernate(三)(
来源:互联网 发布:拼多多互刷平台源码 编辑:程序博客网 时间:2024/05/16 19:57
这篇内容是紧接着hibernate(二)的,因为博客字数不允许,只能分成两份发了。
下面是些对应关系的测试代码,都是用Jutil进行单元测试的。
package cn.itcast.demo.test;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;
import cn.itcast.demo.entities.User;
public class CollectionTest {
@Test
public void test() {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
User user = new User();
// 1, Set
user.getAddresses().add("aa");
user.getAddresses().add("bb");
user.getAddresses().add("cc");
// 2, List
// user.getPhoneNumbers().add("111");
// user.getPhoneNumbers().add("222");
// 3, Array<Object>
// String addresses2[] = {"add11", "add22"};
// user.setAddresses2(addresses2);
// 4, Array<primitive-value>
// int[] phoneNumbers2 = {111, 222};
// user.setPhoneNumbers2(phoneNumbers2);
// 5, Bag
// user.getAddresses3().add("add111");
// user.getAddresses3().add("add222");
// 6, Map
// user.getPhoneNumbers3().put("aa", "11");
// user.getPhoneNumbers3().put("bb", "22");
// System.out.println(user.getAddresses().getClass());
session.save(user);
// System.out.println(user.getAddresses().getClass());
user = (User) session.get(User.class, 9);
System.out.println(user.getAddresses());
tx.commit();
session.close();
}
public static void main(String[] args) {
Set<User> set = new LinkedHashSet<User>();// new TreeSet<User>();// new HashSet<User>();
// LinkedHashMap
set.add(new User(33));
set.add(new User(11));
set.add(new User(1));
set.add(new User(22));
System.out.println(set);
}
}
package cn.itcast.demo.test;
import org.hibernate.Hibernate;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;
import cn.itcast.demo.entities.Group;
import cn.itcast.demo.entities.User;
public class LazyTest {
@Test
public void test() {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Group group = (Group) session.get(Group.class, 25);
// group.getRoles();
// System.out.println(group.getRoles());
Hibernate.initialize(group.getRoles());
// User user = (User) session.get(User.class, 19);
// System.out.println(user.getGroup());
tx.commit();
session.close();
System.out.println(group.getRoles());
}
}
package cn.itcast.demo.test;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;
import cn.itcast.demo.entities.Group;
import cn.itcast.demo.entities.Role;
public class ManyToManyTest {
@Test
public void test() {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
// Group group = new Group();
// group.setName("testManyToMany");
//
// Role role = new Role();
// role.setName("testManyToMany");
//
// // group.getRoles().add(role);
// role.getGroups().add(group);
//
// session.save(group);
// session.save(role);
Group group = (Group) session.get(Group.class, 25);
//group.getRoles().clear();
// System.out.println(group.getRoles());
tx.commit();
session.close();
}
}
package cn.itcast.demo.test;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;
import cn.itcast.demo.entities.Group;
import cn.itcast.demo.entities.User;
public class OneToManyTest {
@Test
public void test() {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
User user = new User();
Group group = new Group();
Group group2 = new Group();
group2.setParent(group);
user.setGroup(group);
// group.getUsers().add(user);
session.save(user);
session.save(group);
session.save(group2);
// 通过User,可以得到关联的Group
// user = (User) session.get(User.class, 21);
// System.out.println(user.getGroup());
// 通过Group,可以得到关联的User
// group = (Group) session.get(Group.class, 3);
// System.out.println(group.getUsers());
tx.commit();
session.close();
}
}
package cn.itcast.demo.test;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;
import cn.itcast.demo.entities.IdCard;
import cn.itcast.demo.entities.User;
public class OneToOneTest {
@Test
public void test() {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
User user = new User();
// user.setId(52);
user.setName("testOneToOne");
IdCard idCard = new IdCard();
idCard.setSn("123");
idCard.setUser(user);
// User不以维护关系
// user.setIdCard(idCard);
session.save(user);
session.save(idCard);
tx.commit();
session.close();
}
}
这个其实在添加一个表的时候就要将其放入hibernate.cfg.xml中。之所以将其放倒最后,就是想引起读者的注意的。
<!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="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="connection.url">jdbc:mysql:///hibernatedemo2</property>
<property name="connection.username">root</property>
<property name="connection.password">1234</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<property name="format_sql">false</property>
<mapping resource="cn/itcast/demo/entities/User.hbm.xml" />
<mapping resource="cn/itcast/demo/entities/Group.hbm.xml" />
<mapping resource="cn/itcast/demo/entities/IdCard.hbm.xml" />
<mapping resource="cn/itcast/demo/entities/Role.hbm.xml" />
</session-factory>
</hibernate-configuration>
最后我再写一些自己的总结:
1.我先犯得一个主要错误就是,在group中,在定义表明的时候,我将table设置为group了,这个错误不仅只有我一个人出现这样的问题。
后经过汤老师的指点,原来group是关键字,在定义表名的时候不能设置关键字的。
2.在上面得实体类的代码中,发现了,equals和hashCode两个方法,之所以这样写,是为了在内存中查找id的。
3.设置index索引是为了给list取出数据后时还是按顺序取出,如果不索引取出的数据是无序的。
上面就是我的一些个人觉得应该注意的地方。
- hibernate(三)(
- Hibernate学习(三)
- Hibernate总结(三)
- Hibernate基础(三)
- Hibernate基本知识(三)
- Hibernate框架(三)
- hibernate注解(三)
- Hibernate总结(三)
- Hibernate(三)
- Hibernate(三)
- Hibernate基础知识(三)
- hibernate(三)
- Hibernate入门(三)
- hibernate(三)入门级--hibernate实例
- Hibernate(三):Hibernate核心类,接口
- Hibernate(三):三种实例状态
- 【hibernate】hibernate 4 (hibernate对象的三种状态)
- Hibernate 主键概述(三)
- oracle(三)
- oracle(四)
- Hibernate(一)
- Hibernate(二)
- bash
- hibernate(三)(
- Hibernate(四)
- 做企业:什么都可以外包么
- Hibernate(五)
- mail -s "Good News" lianxiang@localhost < 1.sh
- 5.18学习进度---20号搞定FLEX
- AJAX简单的用户注册
- Java语言中的参数传递
- AJAX(二)(