从读Hibernate的手册开始了学习Hibernate的历程。 《与猫同乐》----乐的有些尴尬,因为在99%时,测试用了普通Java类,长时间滞留不前,把我的猫忘在门外了   1、配置数据源。 在Tomcat5中,修改conf\tomcat-users.xml文件,加入<user username="admin" password="admin" roles="admin"/>。启动Tomcat,进入管理页面,添加数据源,最终有如下信息加入项目的配置文件中:   <Resource name="jdbc/quickstart" type="javax.sql.DataSource"/>   <ResourceParams name="jdbc/quickstart">     <parameter>       <name>maxWait</name>       <value>5000</value>     </parameter>     <parameter>       <name>maxActive</name>       <value>4</value>     </parameter>     <parameter>       <name>password</name>       <value>secret</value>     </parameter>     <parameter>       <name>url</name>       <value>jdbc:mysql://localhost/test</value>     </parameter>     <parameter>       <name>driverClassName</name>       <value>com.mysql.jdbc.Driver</value>     </parameter>     <parameter>       <name>maxIdle</name>       <value>2</value>     </parameter>     <parameter>       <name>username</name>       <value>quickstart</value>     </parameter>   </ResourceParams>   2、添加Hibernate库 把所需的库加入类路径中,或是项目Lib中   3、编写hibernate.cfg.xml文件,置于项目编译后的根目录下(在Eclipse或其他IDE中,放在源文件根目录下即可),内容类似下示:   <hibernate-configuration>       <session-factory>           <property name="connection.datasource">java:comp/env/jdbc/quickstart</property>         <property name="show_sql">false</property>         <property name="dialect">net.sf.hibernate.dialect.PostgreSQLDialect</property>           <!-- Mapping files -->         <mapping resource="Cat.hbm.xml"/>       </session-factory>     </hibernate-configuration>   4、编写相应的映射类和配置文件,并放在同一目录下,例如:   package net.sf.hibernate.examples.quickstart;   public class Cat {       private String id;     private String name;     private char sex;     private float weight;       public Cat() {     }       public String getId() {         return id;     }       private void setId(String id) {         this.id = id;     }       public String getName() {         return name;     }       public void setName(String name) {         this.name = name;     }       public char getSex() {         return sex;     }       public void setSex(char sex) {         this.sex = sex;     }       public float getWeight() {         return weight;     }       public void setWeight(float weight) {         this.weight = weight;     }   }     <hibernate-mapping>       <class name="net.sf.hibernate.examples.quickstart.Cat" table="CAT">           <!-- A 32 hex character is our surrogate key. It's automatically             generated by Hibernate with the UUID pattern. -->         <id name="id" type="string" unsaved-value="null" >             <column name="CAT_ID" sql-type="char(32)" not-null="true"/>             <generator class="uuid.hex"/>         </id>           <!-- A cat has to have a name, but it shouldn' be too long. -->         <property name="name">             <column name="NAME" length="16" not-null="true"/>         </property>           <property name="sex"/>           <property name="weight"/>       </class>   </hibernate-mapping>
  *5、编写自定义SessionFactory类,例如:(此为Hibernate自带的示例)   HibernateUtil.java   package net.sf.hibernate.examples.quickstart;   import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;   import net.sf.hibernate.HibernateException; import net.sf.hibernate.Session; import net.sf.hibernate.SessionFactory; import net.sf.hibernate.cfg.Configuration;   import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory;   public class HibernateUtil {       private static Log log = LogFactory.getLog(HibernateUtil.class);       private static final SessionFactory sessionFactory;       static {         try {             // Create the SessionFactory             sessionFactory = new Configuration().configure().buildSessionFactory();         } catch (Throwable ex) {             log.error("Initial SessionFactory creation failed.", ex);             throw new ExceptionInInitializerError(ex);         }     }       public static final ThreadLocal session = new ThreadLocal();       public static Session currentSession() throws HibernateException {         Session s = (Session) session.get();         // Open a new Session, if this Thread has none yet         if (s == null) {             s = sessionFactory.openSession();             session.set(s);         }         return s;     }       public static void closeSession() throws HibernateException {         Session s = (Session) session.get();         session.set(null);         if (s != null)             s.close();     }   }
  6、编写测试Jsp或Serverlet,注意,这里是在Tomcat环境下,不能用普通Java类,示例Jsp: <%@ page contentType="text/html;charset=GBK"%> <%@ page import="net.sf.hibernate.Session"%> <%@ page import="net.sf.hibernate.HibernateException"%> <%@ page import="net.sf.hibernate.Transaction"%> <%@ page import="net.sf.hibernate.examples.quickstart.Cat"%> <%@ page import="net.sf.hibernate.examples.quickstart.HibernateUtil"%> <html> <body> <hr> <%           try{          Session ssession;             ssession = HibernateUtil.currentSession();             Transaction tx= ssession.beginTransaction();             Cat princess = new Cat();             princess.setName("Princess");             princess.setSex('F');             princess.setWeight(7.4f);               ssession.save(princess);             tx.commit();               HibernateUtil.closeSession();             }catch(HibernateException e){             }              %> <hr> </body> </html>  
 
  |