Hibernate 4 初試

來源:互聯網
上載者:User

標籤:

第一次使用Hibernate,基本還算順利的實現了增加和尋找。

版本:Hibernate4.3.8

開發環境:jdk1.7 Intellij Idea14

包結構非常簡單

 

1、建立資料庫

很簡單,test資料庫,包含表user_info,列:userid,username,password。

2、寫設定檔

Hibernate有個設定檔*.cfg.xml,當然起其他的名字其實也一樣能用,可能在自動擷取設定檔的時候會出錯。

HibernateConfig.cfg.xml如下:

<?xml version=‘1.0‘ encoding=‘UTF-8‘?><!DOCTYPE hibernate-configuration PUBLIC        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   --><hibernate-configuration>    <session-factory>        <property name="connection.driver_class">            org.gjt.mm.mysql.Driver        </property>        <property name="connection.url">            jdbc:mysql://localhost:3306/test        </property>        <property name="connection.username">root</property>        <property name="connection.password">123456</property>        <property name="dialect">            org.hibernate.dialect.MySQLDialect        </property>        <property name="show_sql">true</property>        <mapping resource="cfg/BUser.hbm.xml" />    </session-factory></hibernate-configuration>

這設定檔比較容易理解,主要是設定資料庫串連的資訊,看一眼就明白了。cfg/BUser.hbm.xml是實體類的對應檔,內容如下:

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!--    Mapping file autogenerated by MyEclipse - Hibernate Tools--><hibernate-mapping>    <class name="bean.BUser" table="user_info">        <id name="userid" type="java.lang.Integer">            <column name="userid" />            <generator class="increment" />        </id>        <property name="username" type="java.lang.String">            <column name="username" length="30" />        </property>        <property name="password" type="java.lang.String">            <column name="password" length="30" />        </property>    </class></hibernate-mapping>

說起來相當是又寫了一遍實體類的意思,內容更易於理解,<generator class="increment" />這一行是id自增。

寫過設定檔,下一步是建立Session,Session可以算是Hibernate的入口,4.0之後建立session的方法略有不同,代碼如下:

try        {            Configuration config = new Configuration().configure("/cfg/HibernateConfig.cfg.xml");            ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();            //Hibernate4.0新特性:使用ServiceRegistry建立sessionFactory            sessionFactory = config.buildSessionFactory(sr);        }        catch(Throwable e)        {            throw new ExceptionInInitializerError(e);        } public Session getSession(){        Session s = (Session)session.get();        if(s==null||!s.isOpen()){            s = sessionFactory.openSession();            session.set(s);        }        return s;    }

主要是多了個ServiceRegistry,在建立的時候記得一定要調用applySettings這個方法再build(),否則會報錯。

簡單的添加方法:

 public void add(Map<String,Object> info){        Session s = getSession();        Transaction transaction = s.beginTransaction();        BUser user = new BUser();        user.setPassword((String) info.get("password"));        user.setUsername((String) info.get("username"));        s.save(user);        transaction.commit();        s.close();    }

其實如果圖意省事,簡單的寫個BUser傳進來也是一樣的,代碼還能更簡潔。

下面是更簡單的查詢方法:

public void query(){        Session s = getSession();        Criteria criteria = s.createCriteria(BUser.class);        criteria.add(Restrictions.eq("username","uname"));        System.out.println(criteria.list());    }

這是使用api查詢,還可以使用HQL和SQL查詢,不過還沒弄明白怎麼用。

 

Hibernate 4 初試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.