JDBC ของ Spring Dao
วัตถุประสงค์หลักของการสนับสนุน DAO (วัตถุการเข้าถึงข้อมูล) ที่จัดทำโดยฤดูใบไม้ผลิคือการอำนวยความสะดวกในการใช้เทคโนโลยีการเข้าถึงข้อมูลที่แตกต่างกันในวิธีมาตรฐานเช่น JDBC, Hibernate หรือ JDO ไม่เพียง แต่ช่วยให้คุณสลับระหว่างเทคโนโลยีการคงอยู่เหล่านี้ได้อย่างง่ายดาย แต่ยังช่วยให้คุณไม่ต้องพิจารณาจัดการข้อยกเว้นเฉพาะในเทคโนโลยีต่างๆเมื่อเข้ารหัส
เพื่ออำนวยความสะดวกในการใช้เทคโนโลยีการเข้าถึงข้อมูลต่าง ๆ เช่น JDBC, JDO และ Hibernate ในวิธีที่สอดคล้องกันสปริงจัดให้มีคลาส DAO ที่เป็นนามธรรมเพื่อให้คุณขยาย คลาสนามธรรมเหล่านี้มีวิธีการบางอย่างที่คุณสามารถรับแหล่งข้อมูลและข้อมูลการกำหนดค่าอื่น ๆ ที่เกี่ยวข้องกับเทคโนโลยีการเข้าถึงข้อมูลที่คุณใช้อยู่ในปัจจุบัน
คลาสสนับสนุน DAO:
JDBCDAOSUPPORT - คลาสพื้นฐานสำหรับวัตถุการเข้าถึงข้อมูล JDBC จำเป็นต้องมีแหล่งข้อมูลและ JDBCTEMPLATE มีให้สำหรับคลาสย่อย
Hibernatedaosupport - คลาสพื้นฐานสำหรับวัตถุการเข้าถึงข้อมูลไฮเบอร์เนต จำเป็นต้องมีเซสชัน factory และ hibernatetemplate มีให้สำหรับคลาสย่อย นอกจากนี้คุณยังสามารถเลือกที่จะเริ่มต้นโดยตรงโดยการจัดหา hibernatetemplate เพื่อให้การตั้งค่าหลังสามารถนำกลับมาใช้ใหม่ได้เช่น SessionFactory, โหมดฟลัช, นักแปลข้อยกเว้น ฯลฯ
JDodaosupport - คลาสพื้นฐานสำหรับวัตถุการเข้าถึงข้อมูล JDO จำเป็นต้องมีการตั้งค่า PresentenceManagerFactory เพื่อตั้งค่าและจัดเตรียม JDotemplate สำหรับคลาสย่อย
JPADAOSUPPORT - คลาสพื้นฐานสำหรับวัตถุการเข้าถึงข้อมูล JPA จำเป็นต้องใช้ EntityManagerFactory และ JPatemplate มีให้สำหรับคลาสย่อย
ส่วนนี้ส่วนใหญ่กล่าวถึงการสนับสนุนของฤดูใบไม้ผลิสำหรับ JDBCDAOSUPTORT
นี่คือตัวอย่าง:
Drop Table หากมีผู้ใช้ /*================================================================*//*ตาราง: ผู้ใช้*/ /*=================================================================* / สร้างผู้ใช้ตาราง
ผู้ใช้ระดับสาธารณะ {ID จำนวนเต็มส่วนตัว; ชื่อสตริงส่วนตัว; อายุจำนวนเต็มส่วนตัว จำนวนเต็มสาธารณะ getId () {return id; } โมฆะสาธารณะ setId (ID จำนวนเต็ม) {this.id = id; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } Public Integer Getage () {return Age; } การตั้งค่าโมฆะสาธารณะ (อายุจำนวนเต็ม) {this.age = อายุ; - /** * สร้างโดย Identij Idea <br> * <b> ผู้ใช้ </b>: leizhimin <br> * <b> วันที่ </b>: 2008-4-22 15:34:36 <br> * <b> หมายเหตุ </b>: อินเทอร์เฟซ Dao */อินเทอร์เฟซสาธารณะ iuserdao ค้นหาผู้ใช้สาธารณะ (ID จำนวนเต็ม); } นำเข้า Javax.sql.Datasource; นำเข้า java.sql.connection; นำเข้า java.sql.sqlexception; /*** สร้างโดย Ideallij Idea <br>* <b> หมายเหตุ </b>: คลาสฐาน DAO, การฉีดแหล่งข้อมูล*/คลาสสาธารณะที่ใช้ {DataSource ส่วนตัว DataSource; DataSource สาธารณะ getDataSource () {ส่งคืนแหล่งข้อมูล; } โมฆะสาธารณะ setDataSource (DataSource DataSource) {this.dataSource = DataSource; } การเชื่อมต่อสาธารณะ getConnection () {การเชื่อมต่อ conn = null; ลอง {conn = dataSource.getConnection (); } catch (sqlexception e) {e.printstacktrace (); } return conn; }}/** * สร้างโดย Identlij Idea <br> * <b> ผู้ใช้ </b>: leizhimin <br> * <b> วันที่ </b>: 2008-4-22 15:36:04 <br> * <b> note </b> ใหม่ jdbctemplate (getDataSource ()); } การแทรกโมฆะสาธารณะ (ผู้ใช้ผู้ใช้) {สตริงชื่อ = user.getName (); อายุ int = user.getage (). intvalue (); // jdbctemplate.update ("แทรกลงในผู้ใช้ (ชื่อ, อายุ)" // + "ค่า ('" + ชื่อ + "'," + อายุ + ")"); String sql = "แทรกลงในผู้ใช้ (ชื่ออายุ) ค่า (?,?)"; getJdBctemplate (). อัปเดต (SQL, วัตถุใหม่ [] {ชื่อ, อายุ}); } ผู้ใช้ค้นหา (ID จำนวนเต็ม) {list rows = getjdbctemplate (). queryforlist ("เลือก * จากผู้ใช้ที่ id =" + id.intValue ()); ตัววนซ้ำมัน = rows.iterator (); if (it.hasnext ()) {map usermap = (map) it.next (); จำนวนเต็ม i = จำนวนเต็มใหม่ (usermap.get ("id"). toString ()); ชื่อสตริง = usermap.get ("ชื่อ"). toString (); อายุจำนวนเต็ม = จำนวนเต็มใหม่ (usermap.get ("อายุ"). toString ()); ผู้ใช้ผู้ใช้ = ผู้ใช้ใหม่ (); user.setId (i); user.setName (ชื่อ); user.setage (อายุ); ผู้ใช้ส่งคืน; } return null; -<? xml เวอร์ชัน = "1.0" การเข้ารหัส = "utf-8"?> <! doctype beans สาธารณะ "-// spring/dtd bean/en" "http://www.springframework.org/dtd/spring-beans.dtd" name = "driverclassName"> <dange> com.mysql.jdbc.driver </value> </คุณสมบัติ> <property name = "url"> <value> jdbc: mysql: // localhost: 3306/springdb </value> <value> leizhimin </value> </perty> </epean> <bean id = "abstract =" true "> <property name =" dataSource "> <ref bean =" dataSource "/> </porement>
นำเข้า org.springframework.context.applicationContext; นำเข้า org.springframework.context.support.filesystemxmlapplicationContext; /** * สร้างโดย Identlij Idea <br> * <b> ผู้ใช้ </b>: leizhimin <br> * <b> วันที่ </b>: 2008-4-22 15:59:18 <br> * <b> หมายเหตุ </b>: คลาสทดสอบ, ไคลเอนต์ */คลาสสาธารณะ filesystemxmlapplicationContext ("d: //_spring//src//com/lavasoft//springnote//ch05_jdbc03_temp//bean-jdbc-temp.xml"); ผู้ใช้ผู้ใช้ = ผู้ใช้ใหม่ (); user.setName ("hahhah"); user.setage (จำนวนเต็มใหม่ (22)); iuserdao userdao = (iuserdao) บริบท. getBean ("userdao"); userdao.insert (ผู้ใช้); user = userdao.find (จำนวนเต็มใหม่ (1)); System.out.println ("ชื่อ:" + user.getName ()); -
ผลการทำงาน:
log4j: ไม่สามารถพบไส้ติ่งสำหรับ Logger (org.springframework.core.collectionfactory) log4j: เตือนโปรดเริ่มต้นระบบ log4j อย่างถูกต้อง ชื่อ: กระบวนการ JDBCTEMPLATE เสร็จสิ้นด้วยรหัสออก 0
ไฮเบอร์เนตของ Spring Dao
Hibernatedaosupport - คลาสพื้นฐานสำหรับวัตถุการเข้าถึงข้อมูลไฮเบอร์เนต จำเป็นต้องมีเซสชัน factory และ hibernatetemplate มีให้สำหรับคลาสย่อย นอกจากนี้คุณยังสามารถเลือกที่จะเริ่มต้นโดยตรงโดยการจัดหา hibernatetemplate เพื่อให้การตั้งค่าหลังสามารถนำกลับมาใช้ใหม่ได้เช่น SessionFactory, โหมดฟลัช, นักแปลข้อยกเว้น ฯลฯ
ส่วนนี้ส่วนใหญ่กล่าวถึงการสนับสนุนของฤดูใบไม้ผลิสำหรับ hibernatetemplate
นี่คือตัวอย่าง:
Drop Table หากมีผู้ใช้ /*================================================================*//*ตาราง: ผู้ใช้*/ /*=================================================================* / สร้างผู้ใช้ตาราง
/*** สร้างขึ้นโดย Identlij Idea <br>* <b> หมายเหตุ </b>: คลาสเอนทิตี Hiberante*/ผู้ใช้ระดับสาธารณะ {ID INTEGER ส่วนตัว; ชื่อสตริงส่วนตัว; อายุจำนวนเต็มส่วนตัว จำนวนเต็มสาธารณะ getId () {return id; } โมฆะสาธารณะ setId (ID จำนวนเต็ม) {this.id = id; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } Public Integer Getage () {return Age; } การตั้งค่าโมฆะสาธารณะ (อายุจำนวนเต็ม) {this.age = อายุ; -<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <! Doctype Hibernate-Mapping สาธารณะ "-// hibernate/hibernate mapping dtd 3.0 // en" "http://hibernate.sourceforge.net/hibernate-mapping-3 name = "com.lavasoft.springnote.ch06_hbm_02detx.user" table = "ผู้ใช้"> <id name = "id" คอลัมน์ = "id"> <generator/> </id> <property name = "name" column = "name"/> <property name = "อายุ"
/** * สร้างโดย Identij Idea <br> * <b> ผู้ใช้ </b>: leizhimin <br> * <b> วันที่ </b>: 2008-4-23 15:37:43 <br> * <b> หมายเหตุ </b>: อินเทอร์เฟซ Dao */อินเทอร์เฟซสาธารณะ iuserdao ค้นหาผู้ใช้สาธารณะ (ID จำนวนเต็ม); } นำเข้า org.hibernate.sessionfactory; นำเข้า org.springframework.orm.hibernate3.hibernatetemplate; /** * สร้างโดย Identij Idea <br> * <b> ผู้ใช้ </b>: leizhimin <br> * <b> วันที่ </b>: 2008-4-23 15:15:55 <br> * <b> หมายเหตุ </b>: การใช้งาน Dao */ชั้นเรียนสาธารณะ โมฆะสาธารณะ SetSessionFactory (SessionFactory SessionFactory) {This.hibernatetemplate = ใหม่ hibernatetemplate (SessionFactory); } การแทรกโมฆะสาธารณะ (ผู้ใช้ผู้ใช้) {hibernatetemplate.save (ผู้ใช้); System.out.println ("ID ของวัตถุผู้ใช้ที่บันทึกไว้:"+user.getId ()); } ผู้ใช้สาธารณะค้นหา (ID จำนวนเต็ม) {user user = (ผู้ใช้) hibernatetemplate.get (user.class, id); ผู้ใช้ส่งคืน; -<? xml เวอร์ชัน = "1.0" การเข้ารหัส = "utf-8"?> <! doctype beans สาธารณะ "-// spring/dtd bean/en" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <value> com.mysql.jdbc.driver </value> </คุณสมบัติ> <property name = "url"> <value> jdbc: mysql: // localhost: 3306/springdb </value> </property> <property name = "ชื่อผู้ใช้"> <value> <bean id = "sessionfactory" destroy-method = "close"> <property name = "dataSource"> <ref bean = "DataSource"/> </คุณสมบัติ> <property name = "MappingResources"> <slist> <dalue> com/lavasoft/SpringNote/CH06_HBM_022PROTX/USER.HBM. name = "hibernateproperties"> <props> <prop key = "hibernate.dialect"> org.hibernate.dialect.mysqldialect </prop> </props> </คุณสมบัติ> </ebean>
นำเข้า org.springframework.context.applicationContext; นำเข้า org.springframework.context.support.filesystemxmlapplicationContext; /*** สร้างโดย Identij Idea <br>* <b> หมายเหตุ </b>: คลาสทดสอบ, ไคลเอนต์*/คลาสสาธารณะ SpringHiberNatedEmo {โมฆะสาธารณะคง filesystemxmlapplicationContext ("d: //_spring//src//com/lavasoft//springnote//ch06_hbm_02protx//bean-hbm_tx.xml"); // สร้างวัตถุ dao iuserdao userdao = (iuserdao) context.getBean ("userdao"); ผู้ใช้ผู้ใช้ = ผู้ใช้ใหม่ (); user.setName ("Caterpillar"); user.setage (จำนวนเต็มใหม่ (30)); userdao.insert (ผู้ใช้); user = userdao.find (จำนวนเต็มใหม่ (1)); System.out.println ("ชื่อ:" + user.getName ()); -
ผลการทำงาน:
log4j: ไม่สามารถพบไส้ติ่งสำหรับ Logger (org.springframework.core.collectionfactory) log4j: เตือนโปรดเริ่มต้นระบบ log4j อย่างถูกต้อง ID ของวัตถุผู้ใช้ที่บันทึกไว้: 18 ชื่อ: JDBCTEMPLATE กระบวนการเสร็จสิ้นด้วยรหัสออก 0