spring hibernate 整合 註解
Hibernate:
Hibernate是一個開放原始碼的物件關係對映框架,它對JDBC進行了非常輕量級的物件封裝,它將POJO與資料庫表建立對映關係,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行。
spring:
spring是J2EE應用程式框架,是輕量級的IoC(控制反轉)和AOP(面向切面程式設計)的容器框架,主要是針對JavaBean的生命週期進行管理的輕量級容器,可以單獨使用,也可以和Struts框架,hibernate框架等組合使用。
IOC (控制反轉)實現方式為DI(依賴注入):1️⃣setter注入 2️⃣ 構造器注入
資料庫連線池
官方:資料庫連線池(Connection pooling)是程式啟動時建立足夠的資料庫連線,並將這些連線組成一個連線池,由程式動態地對池中的連線進行申請,使用,釋放。
個人理解:建立資料庫連線是一個很耗時的操作,也容易對資料庫造成安全隱患。所以,在程式初始化的時候,集中建立多個數據庫連線,並把他們集中管理,供程式使用,可以保證較快的資料庫讀寫速度,還更加安全可靠。
spring架構圖 :
以下是一個實現spring 和 hibernate 整合的小案例:
1.匯入相關jar包
搜尋jar包(中國倉庫):【連結】MavenRepository:Search/Browse/Explore
2.User實體類 及其xml配置 (不需要解釋)
User.java
package com.lanou.entity;
public class User {
private int userId;
private String userName;
private String userPwd;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this .userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
}
配置檔案User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 關係對映將entity與table進行關聯 -->
<hibernate-mapping>
<class name="com.lanou.entity.User" table="USER">
<id name="userId" type="int" column="USER_ID">
<!-- 指明主鍵生成方式 -->
<generator class="identity"></generator>
</id>
<property name="userName" column="USER_NAME" type="string"></property>
<property name="userPwd" column="USER_Pwd" type="string"></property>
</class>
</hibernate-mapping>
- dao層的UserDao類
UserDao.java
package com.lanou.dao;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.HibernateTemplate;
import org.springframework.stereotype.Repository;
import com.lanou.entity.User;
@Repository
public class UserDao {
// 1.將sessionFactory注入到template
// template 注入到 UserDao
// spring 提供一個物件(CRUD操作)
@Autowired
HibernateTemplate template;
public List<User> getAllUsers() {
String hql = "from User";
List<User> users = (List<User>) template.find(hql);
return users;
}
}
4.重點 配置applicationContext.xml
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- ✨掃描註解 -->
<context:component-scan base-package="com.lanou"></context:component-scan>
<!--1.配置連線池-bean -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/list?characterEncoding=utf-8" />
<property name="user" value="root" />
<property name="password" value="123456" />
</bean>
<!--2. 獲取sessionFactory 通過spring獲取hibernate提供的sessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- 把c3p0注入到sessionFactory中 -->
<property name="dataSource" ref="dataSource"></property>
<!--hibernate 的基本配置 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/lanou/entity/User.hbm.xml</value>
</list>
</property>
</bean>
<!-- 3.template配置 將sessionFactory注入到template -->
<bean id="template" class="org.springframework.orm.hibernate4.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
</beans>
5.編寫測試類
TestHibernate.java
package com.lanou.test;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.lanou.dao.UserDao;
import com.lanou.entity.User;
public class TestHibernate {
/**
* jUnit單元測試
*/
@Test
public void test() {
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao=(UserDao) ac.getBean("userDao");
List<User> users=userDao.getAllUsers();
for (User user : users) {
System.out.println(user.getUserName());
}
}
}
spring 註解注入
@Service用於標註業務層元件 (應用在serviceImpl類上)
@Controller用於標註控制層元件(應用在controller類上)
@Repository用於標註資料訪問元件,即DAO元件
@Component泛指元件,當元件不好歸類的時候,我們可以使用這個註解進行標註。
@Autowired 預設按型別裝配
相關推薦
spring hibernate 整合 註解
Hibernate: Hibernate是一個開放原始碼的物件關係對映框架,它對JDBC進行了非常輕量級的物件封裝,它將POJO與資料庫表建立對映關係,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行。 spring: sp
maven + Struts2 + Spring + Hibernate 整合 >>> 配置文件關系圖
min 模糊 mage 圖片 分享圖片 ssh 所有 配置文件 pan SSH 配置比較多,有很多地方一直都很模糊,這次整理一下思路。 所有源文件都在文末。 XML 文件:鏈接:https://pan.baidu.com/s/1kUHjhAJ 密碼:b4b3 圖片超清
Spring+Hibernate整合
category span spa lns aop pri nco host 繼承 是DAO繼承HibernateTemplate這個類,該類提供了sessionFactory()方法用於註入SessionFactory 通過spring獲取DAO時,註入SessionFa
struts spring hibernate整合
最近等著專案啟動,沒事情幹,把struts2 spring hibernate 又複習了一遍,參考資料是尚學堂-馬老師的視訊講解,感覺很到位,現在把整合的步驟給大家公佈出來,有問題和疑問的大家可以進來討論。 專案所需要的jar包,一共分4部分,spring.jar,hibernate.jar,s
SpringMVC+Spring+Hibernate整合開發
最近突然想認真研究下java web常用框架,雖然現在一直在用,但實現的整體流程不是很瞭解,就在網上搜索資料,嘗試自己搭建,以下是自己的搭建及測試過程。 一、準備工作: 1/安裝並配置java執行環境 2/資料庫的安裝配置(Mysql) 3/安裝並配置伺服器(Tom
Struts2+Spring+Hibernate整合開發(Maven多模組搭建)
Struts2+Spring+Hibernate整合開發(Maven多模組搭建) 0.專案結構 Struts2:web層 Spring:物件的容器 Hibernate:資料庫持久化操作 1.父模組匯入和管理所有需要的jar包 <?xml v
Spring+Hibernate整合開發配置,完整例項
目錄結構 Jar包 配置 一、beans.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.o
Spring+Hibernate整合配置
在公司一直沒有什麼機會直接折騰SSH“原生態”的SSH當今比較流行的輕量級的框架,用著公司的框架也是鬱悶異常,今天沒事整整原來用過的一個專案的配置,發現就算是自己曾經用過的東西,如果較長時間不返過去重新學習,許多你半熟不熟的知識就是異常陌生。下面貼上我的一些配置,暫
spring hibernate整合: Could not obtain transaction-synchronized Session for current thread
當hibernate 將事務交由 spring管理時, 應將 @Transactional 加入對接的介面層,即其它物件呼叫的方法上,若將@Transactional加在內部方法上,將會出現 Could not obtain transacti
Struts2+Spring+Hibernate整合的例子
最近學習了Struts2,Spring,Hibernate的內容。並做了一個簡單的訊息傳送的例子,因為系統很小,所以也不好意思叫系統。雖然例子簡單,但SSH整合的基本內容都包含了。就記錄下來,方便以後查閱。 這個是系統的基本需求。 使用者能夠傳送訊息(多選使用者進行群發)
spring-hibernate整合 事務不起作用
當spring和hibernate 整合後,事務不起作用 解決辦法:通過Spring的SessionFactory的getCurrentSession的方法建立Session 一、首先說一下hibernate中建立用來連線資料庫的Session,有兩種方式。 1.通過Sp
jsf+spring+hibernate 整合出現的錯誤集合
一.錯誤資訊提示:WARN [main] (Configurator.java:126) - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpat
Springmvc+Spring+Hibernate整合框架
前言: 最近沒什麼事做,搭個框架寫成部落格記錄下來,拉通一下之前所學知識. 話不多說,我們直接步入正題。 準備工作: 1/安裝並配置java執行環境 2/資料庫的安裝配置(Mysql) 3/安裝並配置伺服器(Tomcat)
U8Framework4SSH ——開源了一套SSH2(Struts2+Spring+Hibernate)整合框架
U8Framework4SSH U8Server中使用的SSH2(Struts2+Spring3+Hibernate4)框架,包括U8Server整合好的配置檔案,以及抽象出來的一些通用元件,使得基於J2EE框架開發的同學可以快速展開工作。 U8Serv
SSH2專案網上書店系統手把手教學_Struts2+Spring+Hibernate整合開發
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-in
Spring+Hibernate整合時關於Hibernate事務管理的問題
org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.
spring hibernate 整合:spring使用容器JTA事務管理器
說明: 1.EJB的事務是方法級別的隔離,而spring的攔截事務是類級別的,所以spring管理的jta事務在同一個類的不同方法設定不同的事務傳播策略是無效的。 2.使用了spring的事務,就不能顯示地使用hibernate的開啟事務,提交事務等,spring通過攔截器
struts,spring和Hibernate整合(註解式)
首先編寫可持久化的實體@Entity @Table(name = "Stock") public class Stock { @Id //標識實體中ID和底層資料表的主鍵統一 @GeneratedValue private int id; //
Spring和Hibernate的註解整合 hibernate3和hibernate4/5的區別
http://blog.csdn.net/jintaohahahaha/article/details/52856433現在,ssh框架中註解的使用已經非常普遍了,在此我介紹一下spring整合hibernate註解時的配置: hibernate和spring的註解方式
S2SH框架整合(註解)Struts2+Spring+Hibernate+MySql
1 package com.test.common.dao; 2 3 import java.io.Serializable; 4 import java.util.List; 5 6 import org.hibernate.Query; 7 import org.hi