javaee之hibernate的加强巩固练习

来源:互联网 发布:中国网络空间安全战略 编辑:程序博客网 时间:2024/05/20 14:19
hibernate的核心API:
在hibernate的框架中,比较核心的是对数据库的增删改查的四个方法:
Session()、delete()、update()
对于查询的方法来说,分为:单个对象的获取,多个表对象的查询获取
单个对象:get()、load(),而对于多个表查询的方法:createQuery(hql语句)还能设置一个参数

import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.junit.Test;public class text {//添加@Testpublic void text01(){Configuration config = new Configuration().configure();ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();User u = new User();u.setName("张三");Address address1 = new Address();address1.setName("xx");address1.setPhone("123456");address1.setCode("51235");address1.setAddre("sadasda");address1.setUser(u);Address address2 = new Address();address2.setName("xx2");address2.setPhone("1234562");address2.setCode("512352");address2.setAddre("sadasda2");address2.setUser(u);u.getAddress().add(address1);u.getAddress().add(address2);session.save(u);tx.commit();session.close();}//查询@Testpublic void test02(){Configuration config = new Configuration().configure();ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();User user = (User)session.get(User.class, 1);System.out.println(user.getName() + ".." + user.getAddress());tx.commit();session.close();}//删除@Testpublic void test03(){Configuration config = new Configuration().configure();ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();User user = (User)session.get(User.class, 1);session.delete(user);tx.commit();session.close();}//修改@Testpublic void test04(){Configuration config = new Configuration().configure();ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();User user = (User)session.get(User.class, 1);user.setName("李四");session.update(user);tx.commit();session.close();}}



hibernate中映射文件:
1、映射文件 的id主键生成策略:

<id name="id"><!--    class里面可以填写的值:identity:实现主键id的自增长,适合mysqlnative: 在identity、sequence、hilo中选择一个适合数据库的, mysql的会去选择identity,oracle会去选择sequence,都不是的话就会选择hilo(高低位算法)sequence:实现主键id的序列增长,适合Oracleassigned:让开发者自己手动设置主键id的值increment:通过hibernate自己来对id实现的自增长uuid: 通过hibernate自己来生成一个String的32位字符串--><generator class="native" /></id>



2、普通数据类型的映射

<property name="name" column="pname" type="xxx" length="xxx" />type的数据类型:1)、可以写java写法,默认为在实体类中的类型整数:java.lang.Integer字符串:java.lang.String ...2)在hibernate中的写法(为java写法的类型小写类型):整数:integer字符串:string  ...<property name="name" column="pname" type="datetime" /><property name="name" column="pname" type="string" length="1024000" />


hibernate的映射文件的集合映射
1、映射Set集合
<!-- Set集合的映射,Set特点是无序,不重复 key:外键 --><set name="addressSet" table="t_addressSet"><key column="uid"></key><element type="string" column="address"></element></set>
//采用Set的集合方法的映射private Set<String> addressSet = new HashSet<String>();






2、映射List集合
//采用List的集合方法的映射private List<String> addressList = new ArrayList<String>();

<!-- List的映射,List的特点为:有序,可重复 所以需要一个额外的列来设置序号 --><list name="addressList" table="t_addressList"><key column="uid"></key> <index column="idx"></index> <element type="string" column="address"></element> </list>


 
 


3、映射Map集合
//采用Map的集合方法的映射,键值对private Map<String,String> addressMap = new HashMap<String,String>();
<!-- Map的集合,Map特点:无序可重复所以需要提供一个额外的Map-key,来提供键值对 --> <map name="addressMap" table="t_addressMap"> <key column="uid"></key> <map-key type="string" column="addressno"></map-key> <element type="string" column="address"></element> </map>



通过今天的加强对hibernate的练习,能够更加清晰去了解session的各种核心方法和配置文件,映射文件的更多的配置

0 0