<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 用Jersey構建RESTful服務5--Jersey+MySQL5.6+Hibernate4.3 ## 一、總體說明 本例運行演示了用Jersey構建RESTful服務中,如何同過Hibernate將數據持久化進MySQL的過程 ## 二、環境 1. 上文的項目RestDemo 2. MySQL5.6下載[http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16-win32.zip](http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16-win32.zip) 3. Hibernate4.3.4下載[http://sourceforge.net/projects/hibernate/files/hibernate4/4.3.4.Final/hibernate-release-4.3.4.Final.zip](http://sourceforge.net/projects/hibernate/files/hibernate4/4.3.4.Final/hibernate-release-4.3.4.Final.zip) 4. Java程序連接MySQL的驅動mysql-connector-java-5.1.29-bin.jar下載 [http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.29.zip](http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.29.zip) ## 三、數據庫準備 1. 搭建MySQL數據庫 2. 創建數據庫RestDemo ,及數據表t_user,結構如下 ``` DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `userId` varchar(50) NOT NULL, `userName` varchar(50) NOT NULL, `age` varchar(50) NOT NULL, PRIMARY KEY (`userId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` ![](https://box.kancloud.cn/2016-05-11_57332e786efbe.jpg) **PS:** userId 非自增長類型,需要在業務添加 ## 四、引入Hibernate 1. 解壓Hibernate的包,在lib\required文件夾下所有jar引入進項目 ![](https://box.kancloud.cn/2016-05-11_57332e78887a8.jpg) 2. 解壓mysql-connector-java-5.1.29.zip,將mysql-connector-java-5.1.29-bin.jar引入進項目 3. 在項目的根目錄創建hibernate的配置文件hibernate.cfg.xml,內容如下: ``` <?xml version='1.0' encoding='utf-8'?> <!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> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://127.0.0.1:3306/RestDemo</property> <property name="connection.username">root</property> <property name="connection.password"></property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">update</property> <mapping resource="com/waylau/rest/bean/User.hbm.xml"/> </session-factory> </hibernate-configuration> ``` 4. 在項目User.java 的同個目錄下,創建該類的映射文件User.hbm.xml ``` <?xml version="1.0"?> <!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.waylau.rest.bean"> <class name="User" table="T_USER"> <id name="userId" column="USERID" type="string" > <generator class="assigned"/> </id> <property name="userName" type="string" /> <property name="age" type="string" /> </class> </hibernate-mapping> ``` 5. 創建包com.waylau.rest.util,在該包下創建HibernateUtil.java ``` package com.waylau.rest.util; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; /** * Hibernate 初始化配置工具類 * @author waylau.com * 2014-3-23 */ public class HibernateUtil { private static Configuration configuration; private static SessionFactory sessionFactory; private static StandardServiceRegistry standardServiceRegistry; static { try { //第一步:讀取Hibernate的配置文件 hibernamte.cfg.xml文件 configuration = new Configuration().configure("hibernate.cfg.xml"); //第二步:創建服務注冊構建器對象,通過配置對象中加載所有的配置信息 StandardServiceRegistryBuilder sb = new StandardServiceRegistryBuilder(); sb.applySettings(configuration.getProperties()); //創建注冊服務 standardServiceRegistry = sb.build(); //第三步:創建會話工廠 sessionFactory = configuration.buildSessionFactory(standardServiceRegistry); } 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; } } ``` 6. 在項目中建com.waylau.rest.dao包,在該包下建立User操作的接口UserDao.java ``` package com.waylau.rest.dao; import java.util.List; import com.waylau.rest.bean.User; /** * User Dao 接口 * @author waylau.com * 2014-3-18 */ public interface UserDao { public User getUserById(String id); public boolean deleteUserById(String id); public boolean createUser(User user); public boolean updateUser(User user); public List<User> getAllUsers(); } ``` 7. 在項目中建com.waylau.rest.dao.impl包,在該包下建立User操作接口的實現UserDaoImpl.java ``` package com.waylau.rest.dao.impl; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import com.waylau.rest.bean.User; import com.waylau.rest.dao.UserDao; import com.waylau.rest.util.HibernateUtil; /** * 用戶DAO實現 * @author waylau.com * 2014-3-23 */ public class UserDaoImpl implements UserDao { @Override public User getUserById(String id) { SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session s = null; Transaction t = null; User user = null; try{ s = sessionFactory.openSession(); t = s.beginTransaction(); String hql = "from User where userId="+id; Query query = s.createQuery(hql); user = (User) query.uniqueResult(); t.commit(); }catch(Exception err){ t.rollback(); err.printStackTrace(); }finally{ s.close(); } return user; } @Override public boolean deleteUserById(String id) { SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session s = null; Transaction t = null; boolean flag = false; try{ s = sessionFactory.openSession(); t = s.beginTransaction(); User user = new User(); user.setUserId(id); s.delete(user); t.commit(); flag = true; }catch(Exception err){ t.rollback(); err.printStackTrace(); }finally{ s.close(); } return flag; } @Override public boolean createUser(User user) { SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session s = null; Transaction t = null; boolean flag = false; try{ s = sessionFactory.openSession(); t = s.beginTransaction(); s.save(user); t.commit(); flag = true; }catch(Exception err){ t.rollback(); err.printStackTrace(); }finally{ s.close(); } return flag; } @Override public boolean updateUser(User user) { SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session s = null; Transaction t = null; boolean flag = false; try{ s = sessionFactory.openSession(); t = s.beginTransaction(); s.update(user); t.commit(); flag = true; }catch(Exception err){ t.rollback(); err.printStackTrace(); }finally{ s.close(); } return flag; } @Override public List<User> getAllUsers() { SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session s = null; Transaction t = null; List<User> uesrs = null; try{ s = sessionFactory.openSession(); t = s.beginTransaction(); String hql = "select * from t_user"; Query query = s.createSQLQuery(hql).addEntity(User.class); query.setCacheable(true); // 設置緩存 uesrs = query.list(); t.commit(); }catch(Exception err){ t.rollback(); err.printStackTrace(); }finally{ s.close(); } return uesrs; } } ``` 8. 修改項目中 com.waylau.rest.resources包下的UserResource.java,使之前在內存中模擬CURD轉為在數據庫中實現 ``` package com.waylau.rest.resources; import java.util.ArrayList; import java.util.List; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.Consumes; import javax.ws.rs.PathParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; import com.waylau.rest.bean.User; import com.waylau.rest.dao.impl.UserDaoImpl; /** * 用戶資源 * @author waylau.com * 2014-3-19 */ @Path("/users") public class UserResource { private UserDaoImpl userDaoImpl = new UserDaoImpl(); /** * 增加 * @param user */ @POST @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public void createUser(User user) { userDaoImpl.createUser(user); } /** * 刪除 * @param id */ @DELETE @Path("{id}") public void deleteUser(@PathParam("id")String id){ userDaoImpl.deleteUserById(id); } /** * 修改 * @param user */ @PUT @Consumes(MediaType.APPLICATION_XML) public void updateUser(User user){ userDaoImpl.updateUser(user); } /** * 根據id查詢 * @param id * @return */ @GET @Path("{id}") @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public User getUserById(@PathParam("id") String id){ User u = userDaoImpl.getUserById(id); return u; } /** * 查詢所有 * @return */ @GET @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public List<User> getAllUsers(){ List<User> users = new ArrayList<User>(); users = userDaoImpl.getAllUsers(); return users; } } ``` ## 五、運行 1. 將服務端運行后 2. 運行UserClient客戶端,可以看到數據庫已經實現增刪改查 完整項目架構如下: ![](https://box.kancloud.cn/2016-05-11_57332e789dfd4.jpg) **本章源碼**:[https://github.com/waylau/RestDemo/tree/master/jersey-demo5-mysql-hibernate](https://github.com/waylau/RestDemo/tree/master/jersey-demo5-mysql-hibernate)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看