hibernate框架

1、所需要架包

直接把hibernate中lib/required中的所有包放进去以及连接oracle数据库的架包。

2、写实现类(例如:标签类)

package com.chinasofti.ask.entity;

import java.util.HashSet;
import java.util.Set;

public class Tag {
    private String id;  //主键id
    private String name;  //标签名
    private int questionNums;  //问题的数量
    
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getQuestionNums() {
        return questionNums;
    }
    public void setQuestionNums(int questionNums) {
        this.questionNums = questionNums;
    }
 

3、写hibernate.cfg.xml配置文件(放在src目录下)

<!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>

    <!-- 加载驱动 -->
    <property name="connection.driver_class">
        oracle.jdbc.driver.OracleDriver
    </property>

    
    <!-- URL -->

    <property name="connection.url">
        jdbc:oracle:thin:@localhost:1521:ORCL
    </property>
    <property name="connection.username">jung</property>
    <property name="connection.password">jung</property>
    <property name="dialect">
        org.hibernate.dialect.Oracle12cDialect
    </property>

   
    <!-- 是否显示sql语句 -->

    <property name="show_sql">true</property>
    <property name="format_sql">true</property>


   <!-- 映射Tag.hbm.xml文件 -->

    <mapping resource="com/chinasofti/ask/entity/Tag.hbm.xml" />

</session-factory>
</hibernate-configuration>

 4、写Tag.hbm.xml配置文件(放在实体类包下)

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">


<!-- 映射包路径,一定不要写错 -->

<hibernate-mapping package="com.chinasofti.ask.entity">
    <class name="Tag" table="t_tag">
        <id name="id">

         <!-- uuid自动生成id主键 -->

            <generator class="uuid" />
        </id>
        <property name="name" />
        <property name="questionNums" />   
 
    </class>
</hibernate-mapping>

5、写hibernate连接工具类

 package com.chinasofti.ask.util;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class HibernateUtil
{
    private static SessionFactory factory;
    
    static{
        Configuration configuration=new Configuration().configure();
        factory=configuration.buildSessionFactory();        
    }
    
    public static SessionFactory getFactory()
    {
        return factory;
    }
    
    public static Session getSession()
    {
        Session session=HibernateUtil.getFactory().openSession();
        return session;
    }
    //增加
    public static  <T> void add(T t)
    {
        Session session=getSession();
        Transaction transaction=session.beginTransaction();
        session.save(t);
        transaction.commit();
        session.close();
    }
   

   //修改

    public static <T> void update(T t) {
        Session session=getSession();
        Transaction transaction=session.beginTransaction();
        session.update(t);
        transaction.commit();
        session.close();        
    }
   

    //删除

    public static <T> void delete(Class<T> c, String id)
    {
        Session session=getSession();
        Transaction transaction=session.beginTransaction();
        session.delete(session.get(c, id));
        transaction.commit();
        session.close();  
    }
   

    //根据id查询

    public static <T> T query(Class<T> c, String id)
    {
        Session session=getSession();
        Transaction transaction=session.beginTransaction();
        T t=session.get(c, id);
        transaction.commit();
        session.close();  
        return t;
    }


    //查询全部
    public static <T> List<T> queryAll(Class<T> c)
    {
        Session session=getSession();
        Transaction transaction=session.beginTransaction();
        List<T> list=session.createQuery("from "+c.getSimpleName()).list();
        transaction.commit();
        session.close();
        return list;
    }

}

6、写DAO层

package com.chinasofti.ask.dao;

import java.util.List;

import com.chinasofti.ask.entity.Tag;
import com.chinasofti.ask.util.HibernateUtil;

public class TagDao
{
    public void addTag(Tag tag)
    {
        HibernateUtil.add(tag);
    }
   
    public void updateTag(Tag tag)
    {
        HibernateUtil.update(tag);
    }
   
    public void deleteTag(String id)
    {
        HibernateUtil.delete(Tag.class,id);
    }
   
    public Tag queryTag(String id)
    {
        return HibernateUtil.query(Tag.class, id);
    }
   
    public List<Tag> queryAllTag()
    {
        return HibernateUtil.queryAll(Tag.class);
    }
   
}

7、写测试类(需要导入junit测试包)

package com.chinasofti.ask.test;

import java.util.List;
import org.junit.Before;
import org.junit.Test;

import com.chinasofti.ask.dao.TagDao;
import com.chinasofti.ask.entity.Tag;

public class TestTag
{
    private TagDao tagDao;
   
    @Before
    public void before()
    {
        tagDao=new TagDao();
    }
   
    @Test
    public void addTag()
    {
        Tag tag=new Tag();
       tag.setName("string");
       tag.setQuestionNums(2);     
      
       tagDao.addTag(tag);
       
    }
   
    @Test
    public void deleteTag(){
        tagDao.deleteTag("2c848f9f555c031b01555c031f1f0000");
       
    }
   
    @Test
    public void update()
    {
        Tag tag=tagDao.queryTag("2c848f9f5558a9ec015558a9f2f60002");
        tag.setQuestionNums(3);
       
        tagDao.updateTag(tag);
    }
   
    @Test
    public void query()
    {
        Tag tag=tagDao.queryTag("2c848f9f5558a9ec015558a9f2f60002");
        System.out.println(tag.getName()+","+tag.getQuestionNums());
       
    }
   
    @Test
    public void queryAll()
    {
        List<Tag> list=tagDao.queryAllTag();
        for (Tag tag : list)
        {
            System.out.println(tag.getId()+","+tag.getName());
        }
    }
}

猜你喜欢

转载自460768612.iteye.com/blog/2310447