PHP字串長度找子字串與取代字串的常用函數

PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...

顯示具有 Hibernate 標籤的文章。 顯示所有文章
顯示具有 Hibernate 標籤的文章。 顯示所有文章

2014年8月19日 星期二

整合Struts2+Spring+Hibernate的專案

簡介


我們在先前的兩篇文章中已經向大家介紹過Spring與Hibernate的結合運用的範例教學。

然而於本文中,我們將再把Struts2也一起加入進來使用,讓整個專案形成一個結構嚴謹與完整的MVC(Model View Controller)架構。

使用的工具&技術
1.JDK1.7.0_04
2.Hibernate 3.2.3.GA
3.JBoss Hibernate Tools
4.Spring3.0.7
5.Struts2-2.3.15.1
6.MySQL 5.5
7.Eclipse Java EE KEPLER

第一支MyStruts2專案

在圖1中可以讓我們清楚的了解,整個專案的目錄結構,大致分為dao,service,action三個主要的目錄組成。

圖1.MyStruts2專案結構

第一步,下載Struts2-2.3.15.1Spring3.0.7Hibernate 3.2.3.GA的相關jar檔案。
Struts2部份主要的jar:
struts2-core-2.3.15.1.jar
struts2-embeddedjsp-plugin-2.3.15.1.jar
struts2-json-plugin-2.3.15.1.jar
struts2-spring-plugin-2.3.15.1.jar
xwork-core-2.3.15.1.jar
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
ognl-3.0.6.jar
oro-2.0.8.jar

第二步,生成Spring與Hibernate的相關dao和service
Hibernate組成部份:
UserInfo.java
UserInfo.hbm.xml
UserInfoHome.java

Spring組成部份:
UserInfoManager.java
applicationContext.xml

第三步,建立struts.xml配置檔

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>

  <constant name="struts.devMode" value="false" />
  <!-- struts的URL擴展名-->
  <constant name="struts.action.extension" value="do" />

  <!-- 允許訪問靜態成員變量 -->
  <constant name="struts.ognl.allowStaticMethodAccess" value="true" />

  <constant name="struts.custom.i18n.resources" value="i18n/messages" />
  <constant name="struts.enable.DynamicMethodInvocation" value="false" />
  <constant name="struts.enable.SlashesInActionNames" value="true" />
  
  <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"></constant>  
  <constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.DefaultActionMapper"></constant>
  
  <package name="default" namespace="/pages" extends="struts-default">     
     <action name="*/*" method="{2}" class="com.yourcompany.ms2.action.{1}Action">           
       <result name="success">/pages/{1}/{2}.jsp</result>
     </action>
     <!-- Add your actions here -->
     
  </package>

</struts>

第四步,加入query.jsp顯示資料庫查詢結果 (需位於pages/Test/目錄底下)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'query.jsp' starting page</title>
    
   </head>
  
  <body>
     <h2><s:property value="message" /></h2>
     <s:label value="OK"/>
  </body>
</html>

第五步,創建TestAction測試程式


package com.yourcompany.ms2.action;

import org.springframework.beans.factory.annotation.Autowired;
import com.opensymphony.xwork2.ActionSupport;
import com.yourcompany.ms2.domain.UserInfo;
import com.yourcompany.ms2.service.UserInfoManager;

public class TestAction extends ActionSupport  {  
    
 @Autowired
 private UserInfoManager userInfoManager; 

 public String query() throws Exception {  
  // 查詢
  UserInfo user = userInfoManager.query(new Integer(1));
  //out.println("查詢一筆記Username: "+user.getUsername());
  setMessage("查詢一筆記Username: "+user.getUsername());
  return SUCCESS;
  }
  
  public String hello() throws Exception {
   setMessage("Hello, My Struts2.");    
   return SUCCESS;
  }

  private String message;

  public void setMessage(String message) {
   this.message = message;
  }

  public String getMessage() {
   return message;
  }
}

結論

假如您已經學會了Spring結合Hibernate的混合搭配使用,那麼這篇文章中,你只需要把焦點集中在Struts2的參數設定和實際操作測試。轉眼間,我們已經成功的演繹Struts2 + Spring + Hibernate的網站專案的示範教學。

(下載本文範例程式檔) 記得下載相關jar檔

2014年8月18日 星期一

Spring結合Hibernate的Web運用

前言


在這篇文章中,我們將使用Spring搭配Hibernate來建構Web站台,以DAO(Data Access Object;資料存取物件)的方式透過Hibernate存取資料庫的數据。使用的工具&技術:
1.JDK1.7.0_04
2.Hibernate 3.2.3.GA
3.JBoss Hibernate Tools
4.Spring3.0.7
5.MySQL 5.5
6.Eclipse Java EE KEPLER

創建一個MySpringHiber的Web專案


這個小節中,我們需要根據圖1.中的的目錄資料結構,來分別建立本專案中各個重要的程式檔案。並且會逐步說明每支程式的關鍵內容明細的組成部份。
圖1.MySpringHiber專案結構



第一步,下載Spring 3.0.7Hibernate 3.2.3ga版本的相關jar檔。
Spring部份的主要jar
com.springsource.org.aopalliance-1.0.0.jar
org.springframework.aop-3.0.7.RELEASE.jar
org.springframework.asm-3.0.7.RELEASE.jar
org.springframework.aspects-3.0.7.RELEASE.jar
org.springframework.beans-3.0.7.RELEASE.jar
org.springframework.context.support-3.0.7.RELEASE.jar
org.springframework.context-3.0.7.RELEASE.jar
org.springframework.core-3.0.7.RELEASE.jar
org.springframework.expression-3.0.7.RELEASE.jar
org.springframework.jdbc-3.0.7.RELEASE.jar
org.springframework.orm-3.0.7.RELEASE.jar
org.springframework.oxm-3.0.7.RELEASE.jar
org.springframework.transaction-3.0.7.RELEASE.jar
org.springframework.web.servlet-3.0.7.RELEASE.jar
org.springframework.web-3.0.7.RELEASE.jar

Hibernate部份的主要jar
antlr-2.7.6.jar
cglib-2.1.3.jar
dom4j-1.6.1.jar
hibernate3.jar
javassist.jar
jta.jar

其他必要的jar
mysql-connector-java-5.0.5-bin.jar
commons-logging-1.1.1.jar
commons-collections-2.1.1.jar
commons-dbcp.jar
commons-pool.jar
slf4j-api-1.7.5.jar
slf4j-jdk14-1.7.5.jar
log4j-1.2.11.jar

第二步,建立applicationContext.xml的spring的設定檔。注意代碼內的注解說明文字,主要設定內容的重點 ,可以分為dataSource(數据來源), sessionFactory, TransactionManager, Spring Bean的元件自動搜尋注入。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="http://www.springframework.org/schema/beans  
  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  http://www.springframework.org/schema/tx 
  http://www.springframework.org/schema/tx/spring-tx-2.5.xsd  
  http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-2.5.xsd"
    default-autowire="byName" default-lazy-init="false">
  
 <!-- 數据來源定義 -->  
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8"/>
    <property name="username" value="root"/>
    <property name="password" value="mysql"/>
  </bean>
  
  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    
 <property name="mappingLocations" value="classpath*:com/yourcompany/msh/domain/*.hbm.xml"/>  
    
 <property name="hibernateProperties">
   <props>
     <!--常用資料庫方言 MySQL5Dialect -->
  <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
  <prop key="hibernate.show_sql">true</prop>
  <prop key="hibernate.query.substitutions">true 1, false 0</prop>
  <prop key="hibernate.default_batch_fetch_size">4</prop>
  <prop key="hibernate.connection.zeroDateTimeBehavior">convertToNull</prop>   
   </props>
 </property>
  </bean>
 
  <!--Hibernate TransactionManager-->
  <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
  </bean>
 
  <!-- 以 @Transactional 標注来定義交易事務 -->
  <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
  
  <!-- component-scan自動搜索@Component , @Controller , @Service , @Repository等標注的類別 -->
  <context:component-scan base-package="com.**.dao" />
  <context:component-scan base-package="com.**.service" />

</beans>



第三步,修正Web.xml的檔案內容。設置Spring ApplicationContext配置文件的路徑,此參數用於後面的Spring-Context loader,然後建立一支TestSpring的Servlet程式用來測試整個專案的正常配接態狀。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
 xmlns="http://java.sun.com/xml/ns/javaee" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  
  
  <!-- Spring ApplicationContext配置文件的路徑,此參數用於後面的Spring-Context loader -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring/*.xml</param-value>
  </context-param>  
  
  <!--Spring ApplicationContext 載入 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
    
  <servlet>    
    <servlet-name>TestSpring</servlet-name>
    <servlet-class>com.yourcompany.msh.test.TestSpring</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>TestSpring</servlet-name>
    <url-pattern>/TestSpring</url-pattern>
  </servlet-mapping>  
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
</web-app>


第四步,調整UserInfoHome的程式內容,讓它繼承HibernateDaoSupport類別。
而後移除以下的程式碼:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11


private final SessionFactory sessionFactory = getSessionFactory();

 protected SessionFactory getSessionFactory() {
  try {   
   return HibernateUtil.getSessionFactory();
  } catch (Exception e) {
   log.error("Could not build SessionFactory", e);
   throw new IllegalStateException(
     "Could not build SessionFactory");
  }
 }



再把sessionFactory變數全部由getSessionFactory()方法取代:

Before

1


sessionFactory.getCurrentSession().persist(transientInstance);


After

1


getSessionFactory().getCurrentSession().persist(transientInstance);



第五步,重新改寫UserInfoManager的代碼。


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46


package com.yourcompany.msh.service;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.yourcompany.msh.dao.UserInfoHome;
import com.yourcompany.msh.domain.UserInfo;

@Service
@Transactional
public class UserInfoManager {
 
 private UserInfoHome userInfoHome;

 public void setUserInfoHome(UserInfoHome userInfoHome) {
  this.userInfoHome = userInfoHome;
 } 
 
 /**
  * 查詢
  */
 public UserInfo query(Integer pk) {  
  return (UserInfo)userInfoHome.findById(pk);   
 }
 
 /**
  * 新增
  */
 public void add(UserInfo user) {  
  userInfoHome.persist(user);
 }
 
 /**
  * 修改
  */
 public void update(UserInfo user) {  
  userInfoHome.merge(user);  
 }
 
 /**
  * 刪除
  */
 public void delete(UserInfo user) {  
  userInfoHome.delete(user);  
 }

}




第六步,寫一支TestSpring來測試Spring結合Hibernate操作資料表。

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118


package com.yourcompany.msh.test;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import com.yourcompany.msh.domain.UserInfo;
import com.yourcompany.msh.service.UserInfoManager;

public class TestSpring extends HttpServlet {
 
 @Autowired
 private UserInfoManager userInfoManager;
 

 /**
  * Constructor of the object.
  */
 public TestSpring() {
  super();
 }
 
 /**
  * Initialization of the servlet. <br>
  *
  * @throws ServletException if an error occurs
  */
 public void init(ServletConfig config) throws ServletException {  
  SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,config.getServletContext()); 
 }

 /**
  * Destruction of the servlet. <br>
  */
 public void destroy() {
  super.destroy(); // Just puts "destroy" string in log
  // Put your code here
 }

 /**
  * The doGet method of the servlet. <br>
  *
  * This method is called when a form has its tag value method equals to get.
  * 
  * @param request the request send by the client to the server
  * @param response the response send by the server to the client
  * @throws ServletException if an error occurred
  * @throws IOException if an error occurred
  */
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  doit(request,response);
 }

 /**
  * The doPost method of the servlet. <br>
  *
  * This method is called when a form has its tag value method equals to post.
  * 
  * @param request the request send by the client to the server
  * @param response the response send by the server to the client
  * @throws ServletException if an error occurred
  * @throws IOException if an error occurred
  */
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  
  doit(request,response);
 }
 
 
 public void doit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();
  out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
  out.println("<HTML>");
  out.println("  <HEAD><TITLE>A Servlet For Spring</TITLE></HEAD>");
  out.println("  <BODY>");  
  
  UserInfo user = null;
  
  // 查詢
  user = userInfoManager.query(new Integer(1));
  out.println("查詢一筆記Username: "+user.getUsername()); 
  
  // 新增
  /*user = new UserInfo("Linda", "da67890", new Date(), new Integer(0), new Integer(32));
  userInfoManager.add(user);
  out.println("新增一筆記"+user.getUsername()+"成功");*/ 
  
  // 修改
  /*user = userInfoManager.query(new Integer(2));
  user.setUsername("Marry");
  user.setSex(new Integer(0));  //更新為女性
  user.setAge(new Integer(37)); //更新為37歲
  out.println("修改一筆記"+user.getUsername()+"成功");*/
  
  // 刪除
  /*user = userInfoManager.query(new Integer(2));
  out.println("刪除一筆記"+user.getUsername()+"成功");*/
  
  out.println("  </BODY>");
  out.println("</HTML>");
  out.flush();
  out.close();
  
 }

}


總結

想要建立一個Spring結合Hibernate的Web專案,需要先具備這兩個框架的基礎知識,
這樣才能讓我們更精確有效的建製整個案子的基礎架構。

(下載本文範例程式檔) 記得下載相關jar檔

2014年8月12日 星期二

簡單運用Hibernate操作Mysql資料庫

在這篇文章當中我們將教您如何運用Hibernate來簡單而快速的操作資料庫的表格記錄。

事前準備工具&技術:
1. JDK1.7.0_04
2. Hibernate 3.2.3.GA
3. JBoss Hibernate Tools
4. MySQL 5.5
5. Eclipse Java EE KEPLER

相關表格的建立


於MySQL Server執行如下的script,創建User表格

 1
 2
 3
 4
 5
 6
 7
 8
 9
10


DROP TABLE IF EXISTS `user_info`;
 CREATE TABLE `user_info` (
   `user_id` int(11) NOT NULL AUTO_INCREMENT,
   `username` varchar(50) NOT NULL,
   `password` varchar(50) DEFAULT NULL,
   `birth_date` date DEFAULT NULL,
   `sex` int(1) DEFAULT NULL,
   `age` int(3) DEFAULT NULL,
 PRIMARY KEY (`user_id`) )
 ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;



取得Hibernate的jar檔案


到右側的連結下載Hibernate 3.2.3.GA版本的Hibernate來作為後續的教學之使用。 連結: http://sourceforge.net/projects/hibernate/files/hibernate3/3.2.3.ga/

以下就是我們需要使用到的hibernate的libraries.
antlr-2.76.jar
asm.jar
cglib-2.1.3.jar
dom4j-1.6.1.jar
ehcache-1.2.3.jar
hibernate3.jar
javassist.jar
jta.jar
commons-collections-2.1.1.jar
commons-logging-1.1.1.jar
log4j-1.2.11.jar

其他必要的jar檔:
mysql-connector-java-5.05-bin.jar

建立一個MyHibernate專案


請依据圖1.的專案目錄結構來建立各個重要的程式檔。

圖1.MyHibernate專案結構

第一步,利用JBoss Hibernate Tool從資料庫逆向將user_info表格映射出相應POJO、XML、DAO檔案,如下所示:
UserInfo.java
UserInfo.hbm.xml
UserInfoHome.java

第二步,修改UserInfoHome的getSessionFactory()方法

把以下的一段代碼

1
2
3
4
5
6
7
8
9


 protected SessionFactory getSessionFactory() {
    try {
        return (SessionFactory) new InitialContext()
   .lookup("SessionFactory");
    } catch (Exception e) {
      log.error("Could not locate SessionFactory in JNDI", e);
      throw new IllegalStateException("Could not locate SessionFactory in JNDI");
    }
  }


更改為如下代碼:

1
2
3
4
5
6
7
8


protected SessionFactory getSessionFactory() {
    try {   
 return HibernateUtil.getSessionFactory();
    } catch (Exception e) {
 log.error("Could not build SessionFactory", e);
 throw new IllegalStateException("Could not build SessionFactory");
    }
  }



第三步,建立HibernateUtil類別,用來取得SessionFactory的實體。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25


package com.yourcompany.hb.util;

import org.hibernate.*;
import org.hibernate.cfg.*;

public class HibernateUtil {

    private static final SessionFactory sessionFactory;

    static {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

}



第四步,建立一支UserInfoManager繼承UserInfoHome,負責UserInfo的新增/刪除/修改/查詢的交易事務的處理。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60


package com.yourcompany.hb.util;

import java.util.Date;
import org.hibernate.Session;
import com.yourcompany.hb.domain.UserInfo;
import com.yourcompany.hb.domain.UserInfoHome;

public class UserInfoManager extends UserInfoHome {
 
 /**
  * 查詢
  */
 public void query() {
  Session session = getSessionFactory().getCurrentSession();
  session.beginTransaction();   
  UserInfo user = (UserInfo)findById(new Integer(1));
  session.getTransaction().commit();
  System.out.println("查詢一筆記Username: "+user.getUsername());  
 }
 
 /**
  * 新增
  */
 public void add() {
  Session session = getSessionFactory().getCurrentSession();
  session.beginTransaction();  
  UserInfo user = new UserInfo("Horry", "hy12345", new Date(), new Integer(1), new Integer(25));
  persist(user);
  session.getTransaction().commit();
  System.out.println("新增一筆記"+user.getUsername()+"成功");
 }
 
 /**
  * 修改
  */
 public void update() {
  Session session = getSessionFactory().getCurrentSession();
  session.beginTransaction();  
  UserInfo user = findById(new Integer(2));
  user.setUsername("Marry");
  user.setSex(new Integer(0));  //更新為女性
  user.setAge(new Integer(37)); //更新為37歲
  merge(user);
  session.getTransaction().commit();
  System.out.println("修改一筆記"+user.getUsername()+"成功");
 }
 
 /**
  * 刪除
  */
 public void delete() {
  Session session = getSessionFactory().getCurrentSession();
  session.beginTransaction();  
  UserInfo user = findById(new Integer(2));
  delete(user);
  session.getTransaction().commit();
  System.out.println("刪除一筆記"+user.getUsername()+"成功");
 }

}



第五步,建立TestHibernate測試類別。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24


package com.yourcompany.hb.main;

import com.yourcompany.hb.util.UserInfoManager;

public class TestHibernate {
 /**
  * @param args
  */
 public static void main(String[] args) {
  UserInfoManager um = new UserInfoManager();
  
  // 查詢
  um.query();
  
  // 新增
  //um.add();
  
  // 修改
  //um.update();
  
  // 刪除
  //um.delete();
 }
}



結論


經由上述一個步驟接著一個步驟的操作練習,讓我們很快的了解到原來利用Hibernate來操作資料庫的表格,也可以那麼的輕鬆愉快。

(下載本文範例程式檔) 記得下載相關jar檔