Intro To Hibernate
-
Upload
amit-himani -
Category
Technology
-
view
4.516 -
download
0
description
Transcript of Intro To Hibernate
![Page 1: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/1.jpg)
Introduction to Hibernate
![Page 2: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/2.jpg)
Agenda Introduction to Hibernate Hibernate Architecture Persistence Lifecycle Object Identity Mapping tables to beans Mapping properties to columns Relationships Setting up a one to many relationships Setting up a many to many relationships Hibernate Transaction API Basic Queries Working with Queries Named Queries working with the query API Working with binding parameters
![Page 3: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/3.jpg)
Plain JDBC
Simple example to insert a row into database table, using JDBC
public void insertRow(Employee emp) {
String insertSQL = “INSERT INTO emp values(….);
Connection conn = getConnectionFromPool();
Statement stmt = conn.createStatement(insertSQL);
stmt.execute();
}
![Page 4: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/4.jpg)
Hibernate
Persistence for JavaBean/POJO Support for fine-grained, richly typed object
models Powerful queries Support for detached persistence objects Mapping meta data in XML file
![Page 5: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/5.jpg)
Hibernate Configuration
The hibernate.properties file Used for hibernate configuration Contains
- Database configuration- Datasource configuration- Transaction configuration- Caching configuration- Connection pool configuration- Other settings
![Page 6: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/6.jpg)
Hibernate Configuration... Contd
The hibernate.cfg.xml Alternative approach of configuration Can be used as replacement of
hibernate.properties Picked up from classpath Has got precedence on hibernate.properties file
![Page 7: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/7.jpg)
Hibernate Configuration... Contd Non managed environment
<hibernate-configuration><session-factory>
<property name="hibernate.connection.driver_class"> COM.ibm.db2.jdbc.app.DB2Driver</property><property name="hibernate.connection.url">jdbc:db2:SAMPLE</property><property name="hibernate.connection.username">db2admin</property><property name="hibernate.connection.password">db2admin</property><property name="hibernate.connection.pool_size">10</property><property name="show_sql">true</property><property name="dialect">net.sf.hibernate.dialect.DB2Dialect</property><!-- Mapping files --><mapping resource="test_emp.hbm.xml"/>
</session-factory></hibernate-configuration>
![Page 8: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/8.jpg)
Hibernate Configuration... Contd Managed environment (App Server)
<hibernate-configuration><session-factory>
<property name="hibernate.connection.datasource">java:comp/env/jdbc/my_ds1
</property><property name="hibernate.transaction.factory_class">
org.hibernate.transaction.CMTTransactionFactory</property><property name="hibernate.transaction.manager_lookup_class">
org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</property>
<property name="show_sql">true</property> <property name="dialect">org.hibernate.dialect.DB2Dialect</property>
<mapping resource="emp.hbm.xml"/> <mapping resource="dept.hbm.xml"/>
</session-factory></hibernate-configuration>
![Page 9: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/9.jpg)
Hibernate Mapping The hibernate-mapping xml file
<hibernate-mapping> <class name="com.entity.Emp" table="EMP"> <id name="empId" column="EMP_ID" > <generator class="native"></generator> </id> <property name="empName" column="EMP_NAME"></property> <property name="city" column="CITY"></property> <property name="deptId" column="DEPT_ID"></property> <property name="joinDate" column="JOIN_DATE"></property> <property name=“gender" column=“GENDER"></property> </class></hibernate-mapping>
![Page 10: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/10.jpg)
Simple standalone hibernate appliation
Requirements Hibernate libraries Hibernate configuration file A POJO class A hibernate-mapping file A Main class
![Page 11: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/11.jpg)
Sample POJO public class Emp implements SplEntity { private Integer empId; private String empName; private String city; private int deptId; private Date joinDate; private char gender;
public String getCity() { return city; } public void setCity(String city) { this.city = city; }
public int getDeptId() { return deptId; } public void setDeptId(int deptId) { this.deptId = deptId; }
public Integer getEmpId() { return empId; } public void setEmpId(Integer empId) { this.empId = empId; }
public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; }
public Date getJoinDate() { return joinDate; } public void setJoinDate(Date joinDate) { this.joinDate = joinDate; }
public char getGender() { return gender; } public void setGender(char gender) { this.gender = gender; } }
![Page 12: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/12.jpg)
Sample Main classPublic class Main {
public static void main(String[] args) { try { SessionFactory factory = null; factory = new Configuration().configure().buildSessionFactory();
Session session = factory.openSession();Transaction tx = session.beginTransaction();
Emp e1 = new Emp();e1.setEmpName(“Rajesh B");e1.setCity(“Pune");e1.setDeptId(3);e1.setJoinDate(new Date("20-Jul-1995"));
session.save(e1);tx.commit();
} catch (Exception e) {e.printStackTrace();
}}
}
![Page 13: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/13.jpg)
Hibernate Architecture
![Page 14: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/14.jpg)
High Level View
![Page 15: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/15.jpg)
Understanding the Architecture
![Page 16: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/16.jpg)
Hibernate core interfaces
Session SessionFactory Configuration Transaction Query Criteria Types
![Page 17: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/17.jpg)
Session Interface
![Page 18: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/18.jpg)
SessionFactory Interface
![Page 19: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/19.jpg)
Configuration Interface
![Page 20: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/20.jpg)
Transaction Interface
![Page 21: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/21.jpg)
Query and Criteria Interfaces
![Page 22: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/22.jpg)
Configuring logging in Hibernate
![Page 23: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/23.jpg)
Basic O/R Mapping
![Page 24: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/24.jpg)
Hibernate-Mapping
![Page 25: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/25.jpg)
Class Element
![Page 26: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/26.jpg)
ID element
![Page 27: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/27.jpg)
Composite ID Element
![Page 28: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/28.jpg)
Built in Types
![Page 29: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/29.jpg)
Mapping Collections
![Page 30: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/30.jpg)
Persistent Collections
![Page 31: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/31.jpg)
Emp model table relationship
![Page 32: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/32.jpg)
Mapping Set
![Page 33: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/33.jpg)
Lazy Initialization
![Page 34: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/34.jpg)
Component Mapping
![Page 35: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/35.jpg)
Dependent Object
![Page 36: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/36.jpg)
Sample table definition
![Page 37: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/37.jpg)
Employee-Address data model
![Page 38: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/38.jpg)
Example of component mapping
![Page 39: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/39.jpg)
Address class
![Page 40: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/40.jpg)
Mapping Component
![Page 41: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/41.jpg)
Mapping Associations
![Page 42: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/42.jpg)
Associations
![Page 43: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/43.jpg)
Many to one association
<class name="com.entity.Emp" table="EMP">
...
...
<many-to-one name="dept"
column="DEPT_ID"
class="Department"
not-null="true" />
</class>
![Page 44: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/44.jpg)
Parent child relationship
<class name="com.entity.Dept" table="DEPT">......<set name="employees" inverse="true" cascade="all-delete-orphan"> <key column="DEPT_ID" /> <one-to-many class="Emp" />
</set></class>
![Page 45: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/45.jpg)
One to one relationship
Employee-Person Object Dig
![Page 46: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/46.jpg)
One to one association
<class name="com.entity.Emp" table="EMP">
...
...
<one-to-one name="person" class="Person" />
</class>
![Page 47: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/47.jpg)
Many to many relationship
![Page 48: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/48.jpg)
Link table structure
EMP_TASKS table
![Page 49: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/49.jpg)
Many to many association
![Page 50: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/50.jpg)
Manipulating Persistence Data
![Page 51: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/51.jpg)
Persistence Lifecycle
![Page 52: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/52.jpg)
Transient Objects
![Page 53: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/53.jpg)
Persistent Objects
![Page 54: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/54.jpg)
Detached Objects
![Page 55: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/55.jpg)
Persistence Manager
![Page 56: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/56.jpg)
Making an object persistent
![Page 57: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/57.jpg)
Retrieving persistent object
![Page 58: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/58.jpg)
Updating persistent object
![Page 59: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/59.jpg)
Committing a database transaction
![Page 60: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/60.jpg)
Transaction and Concurrency
![Page 61: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/61.jpg)
Understanding database transactions
![Page 62: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/62.jpg)
Hibernate Transaction API
![Page 63: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/63.jpg)
JDBC Transactions
![Page 64: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/64.jpg)
2 Phase Transactions
![Page 65: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/65.jpg)
Hibernate Query LanguageHQL
![Page 66: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/66.jpg)
Introduction to HQL
![Page 67: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/67.jpg)
Query Interface
![Page 68: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/68.jpg)
Binding Parameters
![Page 69: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/69.jpg)
An example of simple Query
![Page 70: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/70.jpg)
HQL supports:
WHERE clause ORDER BY clause GROUP BY clause All types of joins (inner, left outer, right outer,
outer) Subquery etc
![Page 71: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/71.jpg)
Reporting Queries
![Page 72: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/72.jpg)
Criteria Queries
![Page 73: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/73.jpg)
Simple Criteria example
![Page 74: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/74.jpg)
Other query types supported
Query By Example Native SLQ query
![Page 75: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/75.jpg)
Cache
![Page 76: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/76.jpg)
Mass Update/Deletes
![Page 77: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/77.jpg)
Hibernate Cache Architecture
![Page 78: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/78.jpg)
Hibernate First Level Cache
![Page 79: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/79.jpg)
Hibernate Second Level Cache
![Page 80: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/80.jpg)
Caching Strategies
![Page 81: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/81.jpg)
Enabling Caching
![Page 82: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/82.jpg)
Any Questions ?
![Page 83: Intro To Hibernate](https://reader035.fdocuments.in/reader035/viewer/2022081513/555a7738d8b42a972b8b53ab/html5/thumbnails/83.jpg)
Thanks !!!