Hibernate
Hibernate
Database:
Mysql, etc
Problem in JDBC:
Providing a Solution to common problem is called Framework
1. Connection problem
2. Conversion problem
3. Handling Resources problem
4. Compile Time errors
5. Dependent on database In your Company How you create project for java?
Ans. First you have to create: workspace folder and then you add java
folder inside workspace.
Hibernate Content:
Maven project
DTO
DAO
Hibernate:
Build Tools: Ant Project, Maven Project, Gradle Project
ORM
ORM Problem
JPA What is Maven Project?
Components of Hibernate Ans. Maven is chiefly used for Java-based projects, helping to
CURD Operation download dependencies, which refers to the libraries or JAR
Auto generation of Primary Key files. The tool helps get the right JAR files for each project as
HQL there may be different versions of separate packages.
Problem of relations
Cache
Criteria
How to create Maven Project in eclipse?
-----Next>------- fill GroupId: example-com.oehm5 Artifactid: FirstMavenApplication Package:this will auto generate i.e
com.oehm5.FirstMavenApplication------Finish
For creating any Maven Project ------ Internet Connection must be there
Maven:
Building a software project typically includes one or more of these activities as listed below:
A build tool is a tool that automates everything related to building the software project.
Maven is a project management and a comprehension tool that provides developers a complete build lifecycle framework.
pom (stands for Project Object Model): It is the fundamental unit of work in maven , It contains information about the project and
various configuration details used by Maven to build the project. This will add .jar files in Maven Dependencies folder in your project
when adding dependency in pom.xml (Internet Connection must be there).
Hibernate:
It is a framework which provides solution to common JDBC problems or ORM problem.
It uses internally JDBC.
Compile time is a Class
DTO (Data Transfer Object): And
Class Marvel
Runtime is an Object
Marvel Object
DTO (Data Transfer Object): It is used to transform data or exchange data from one class to another class.
DTO is also a class at compile time.
<dependencies>
</dependencies>
.m2
Maven Central Repository
Movie table
2. SessionFactory(interface):
SessionFactory is used to configures data base for an application
Manages connection for an application(video 4---1:22:00 ---explanation)
Gives the reference of Session
Note: SessionFactory should be created only once in an application
openSession(): This method is used to get the reference of Session.
3. Session(interface):
Session is a live connection between our application and database.
Using Session we can perform CURD operation.
Using Session we can get reference of Transaction, Query and Criteria.
beginTransaction(): get the reference of Transaction
save(userRegisteration):
Reference of UserRegisteration class i.e. Entity class
4. Transaction(interface):
Transaction is a boundary which consist of set of operations
If above all the 3 steps successfully executed then we says as a Successful Transaction.
If above any of 3 steps not successfully executed then we says as a Transaction Failed.
Transaction as two things:
1. rollback()
2. commit()
we need Transaction only when structure of table changes like Create, Insert , Update and Delete a record
we need not require Transaction when we read(fetching) a record from Data Base
By default auto commit () is disabled in Hibernate. For enable auto commit () we have to write: TransactionReference.commit()
IdentifierGenerator(interface):
Video: 06
Method name: generate(): this is use to generate auto Id Number in DataBase.
IdentifierGenerator
strategy=”increment”
@GeneratedValue(generator = "user_auto") --- This will call the method of generate() of IdentifierGenerator (interface)
For Hibernate:
For MySQL:
UserRegistration.java
package com.oehm5.hibernate.entity;
import java.io.Serializable;
@Entity
import javax.persistence.Column;
import javax.persistence.Entity; Entity classes are the fundamental building blocks of
import javax.persistence.GeneratedValue; systems that are developed correspond to database
import javax.persistence.Id; tables.
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
This is used for Primary Key value
@Entity
@Table(name = "user_registeration")
public class UserRegistration implements Serializable {
@Id This annotation is used for auto update id
@GenericGenerator(name = "user_auto", strategy = "increment")
@GeneratedValue(generator = "user_auto")
by increasing 1 value each time in
@Column(name = "id") database
private Long id;
@Column(name = "user_name")
private String userName;
@Column(name = "password")
private String password;
@Column(name = "mobile_number")
private String mobileNumber;
@Column(name = "email")
private String email;
hibernate.cfg.xml
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.oehm5.hibernate.entity.UserRegistration;
session.save(userRegisteration);
transaction.commit();
}
}
package com.oehm5.hibernate;
import com.oehm5.hibernate.dao.RegisterDao;
import com.oehm5.hibernate.entity.UserRegistration;
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Updating Maven Project: hibernate
UserRegistration.java
package com.oehm5.hibernate.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name = "user_registeration")
public class UserRegistration implements Serializable {
@Id
@GenericGenerator(name = "user_auto", strategy = "increment")
@GeneratedValue(generator = "user_auto")
@Column(name = "id")
private Long id;
@Column(name = "user_name")
private String userName;
@Column(name = "password")
private String password;
@Column(name = "mobile_number")
private String mobileNumber;
@Column(name = "email")
private String email;
@Override
public String toString() {
return "UserRegistration [id=" + id + ", userName=" + userName + ", password=" + password + ", mobileNumber="
+ mobileNumber + ", email=" + email + "]";
}
}
RegisterDao.java
package com.oehm5.hibernate.dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.oehm5.hibernate.entity.UserRegistration;
session.save(userRegisteration);
transaction.commit();
}
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/framework_oehm5</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
<mapping class="com.oehm5.hibernate.entity.UserRegistration"></mapping>
</session-factory>
</hibernate-configuration>
App.java
package com.oehm5.hibernate;
import com.oehm5.hibernate.dao.RegisterDao;
//import com.oehm5.hibernate.entity.UserRegistration;
No Changes in pom.xml, database (MySQL) i.e. framework_oehm5 and Overview of the Project (hibernate)
Output in Console:
UserRegistration [id=1, userName=krishna@123, password=xyz, mobileNumber=8248696679, [email protected]]
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Updating Maven Project: hibernate
import java.io.Serializable;
}
RegisterDao.java
package com.oehm5.hibernate.dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.oehm5.hibernate.dto.UserDto;
import com.oehm5.hibernate.entity.UserRegistration;
session.save(userRegisteration);
transaction.commit();
}
session.update(userRegistration);
transaction.commit();
}else {
System.out.println("There is no record exists for a id: "+id);
}
}
}
App.java
package com.oehm5.hibernate;
import com.oehm5.hibernate.dao.RegisterDao;
import com.oehm5.hibernate.dto.UserDto;
//import com.oehm5.hibernate.entity.UserRegistration;
//import com.oehm5.hibernate.entity.UserRegistration;
registerDao.updateUserDetailsById(1L,userDto);
}
}
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/framework_oehm5</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
<mapping class="com.oehm5.hibernate.entity.UserRegistration"></mapping>
</session-factory>
</hibernate-configuration>
pom.xml
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.0.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.32</version>
</dependency>
UserRegistration.java
package com.oehm5.hibernate.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name = "user_registeration")
public class UserRegistration implements Serializable {
@Id
@GenericGenerator(name = "user_auto", strategy = "increment")
@GeneratedValue(generator = "user_auto")
@Column(name = "id")
private Long id;
@Column(name = "user_name")
private String userName;
@Column(name = "password")
private String password;
@Column(name = "mobile_number")
private String mobileNumber;
@Column(name = "email")
private String email;
@Override
public String toString() {
return "UserRegistration [id=" + id + ", userName=" + userName + ", password=" + password + ",
mobileNumber="+ mobileNumber + ", email=" + email + "]";
}
Updated Record
Why we need UserDto class we can use entity class i.e. UserRegistration also for Update the user detail in method
updateUserDetailsById?
Ans. We can use Entity class also but Entity class is used for different purpose and UserDto is used for
different purpose but at last we assign value to Entity class in updateUserDetailById method.
-----------------------------------------------------------------------------------------------------------
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.oehm5.hibernate.dto.UserDto;
import com.oehm5.hibernate.entity.UserRegistration;
session.save(userRegisteration);
transaction.commit();
}
}
}
App.java
package com.oehm5.hibernate;
import com.oehm5.hibernate.dao.RegisterDao;
//import com.oehm5.hibernate.dto.UserDto;
//import com.oehm5.hibernate.entity.UserRegistration;
//import com.oehm5.hibernate.entity.UserRegistration;
registerDao.updateUserDetailsById(1L,userDto);*/
registerDao.deleteUser(1L);
}
}
UserRegistration.java
package com.oehm5.hibernate.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name = "user_registeration")
public class UserRegistration implements Serializable {
@Id
@GenericGenerator(name = "user_auto", strategy = "increment")
@GeneratedValue(generator = "user_auto")
@Column(name = "id")
private Long id;
@Column(name = "user_name")
private String userName;
@Column(name = "password")
private String password;
@Column(name = "mobile_number")
private String mobileNumber;
@Column(name = "email")
private String email;
@Override
public String toString() {
return "UserRegistration [id=" + id + ", userName=" + userName + ", password=" + password + ", mobileNumber="
+ mobileNumber + ", email=" + email + "]";
}
}
UserDto.java
package com.oehm5.hibernate.dto;
import java.io.Serializable;
}
hibernat.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/framework_oehm5</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
<mapping class="com.oehm5.hibernate.entity.UserRegistration"></mapping>
</session-factory>
</hibernate-configuration>
pom.xml
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="aadhar_detail")
public class PersonDetail implements Serializable {
@Id
@Column(name="aadhar_number")
@GenericGenerator(name="aadhar_numbers" ,strategy="increment")
@GeneratedValue(generator="aadhar_numbers")
private Long aadharnumber;
@Column(name="name")
private String name;
@Column(name="dob")
private String DOB;
@Column(name="sex")
private String sex;
@Column(name="mobile_number")
private String mobileNumber;
@Override
public String toString() {
return "PersonDetail [aadharnumber=" + aadharnumber + ", name=" + name + ", DOB=" + DOB + ",
sex=" + sex + ", mobileNumber=" + mobileNumber + "]";
}
}
RegisterDao.java
package com.oehm5.aadhar.dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.oehm5.aadhar.dto.PersonDto;
import com.oehm5.aadhar.entity.PersonDetail;
session.save(personDetail);
transaction.commit();
}
return personDetail;
} else {
System.out.println(aadharNumber+" Aadhar Number is incorrect");
}
}
}
}
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/framework_oehm5</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
<mapping class="com.oehm5.aadhar.entity.PersonDetail"></mapping>
</session-factory>
</hibernate-configuration>
PersonDto.java
package com.oehm5.aadhar.dto;
App.java
package com.oehm5.aadhar;
import com.oehm5.aadhar.dao.RegisterDao;
//import com.oehm5.aadhar.dto.PersonDto;
import com.oehm5.aadhar.entity.PersonDetail;
}
}
Run As-----1JavaApplication
Update on App.java
package com.oehm5.aadhar;
import com.oehm5.aadhar.dao.RegisterDao;
//import com.oehm5.aadhar.dto.PersonDto;
import com.oehm5.aadhar.entity.PersonDetail;
Update on App.java
package com.oehm5.aadhar;
import com.oehm5.aadhar.dao.RegisterDao;
import com.oehm5.aadhar.dto.PersonDto;
import com.oehm5.aadhar.entity.PersonDetail;
Update App.java
package com.oehm5.aadhar;
import com.oehm5.aadhar.dao.RegisterDao;
//import com.oehm5.aadhar.dto.PersonDto;
//import com.oehm5.aadhar.entity.PersonDetail;
Ication
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
user_registration
If I want to fetch record User_Name and Password what query I will write:
SQL: Select user_name, password from user_registration
HQL: select username,password form UserRegistration
HQL (Hibernate Query Language): HQL we write a query in Object Model and it is independent of database.
NOTE:
Notes: In HQL we use Entity class name instead of Table Name and Entity class properties name instead of Column Name
Video: 8
Update query:
SQL: update user_registeration set mobile_number =123456789 where id = 100;
HQL: update UserRegisteration set mobilenumber =: m where id =: i;
Query query = session.createQuery(hql);
query.setParameter("m",newMobileNumber);
query.setParameter("i",id);
You should not use HQL query for insert operation because :
If you want to write insert query then in HQL: insert into UserRegistration (username, password, mobileNumber, email)
values (values1,values2,values3,values4);
the HQL query will become big so that’s why HQL query does not support Insert Operation if we try to do this then it will give Exception
Instead of that we have method” session.save(userRegisteration);”
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Update Maven Project --- hibernate
RegisterHqlDao.java
package com.oehm5.hibernate.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;
import com.oehm5.hibernate.entity.UserRegistration;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.oehm5.hibernate.dto.UserDto;
import com.oehm5.hibernate.entity.UserRegistration;
session.save(userRegisteration);
transaction.commit();
}
}else {
System.out.println("There is no record exists for a id: "+id);
}
}
//Delete user detail
public void deleteUser(Long id) {
UserRegistration userRegistration = getUserById(id);
if(userRegistration!=null) {
Configuration cfg = new Configuration();
cfg.configure();
}
}
UserDto.java(NO changes)
package com.oehm5.hibernate.dto;
import java.io.Serializable;
}
UserRegistration.java(No changes)
package com.oehm5.hibernate.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name = "user_registeration")
public class UserRegistration implements Serializable {
@Id
@GenericGenerator(name = "user_auto", strategy = "increment")
@GeneratedValue(generator = "user_auto")
@Column(name = "id")
private Long id;
@Column(name = "user_name")
private String userName;
@Column(name = "password")
private String password;
@Column(name = "mobile_number")
private String mobileNumber;
@Column(name = "email")
private String email;
@Override
public String toString() {
return "UserRegistration [id=" + id + ", userName=" + userName + ", password=" + password + ",
mobileNumber="
+ mobileNumber + ", email=" + email + "]";
}
}
App.java
package com.oehm5.hibernate;
import java.util.List;
//import com.oehm5.hibernate.dao.RegisterDao;
import com.oehm5.hibernate.dao.RegisterHqlDao;
//import com.oehm5.hibernate.dto.UserDto;
import com.oehm5.hibernate.entity.UserRegistration;
//import com.oehm5.hibernate.entity.UserRegistration;
registerDao.updateUserDetailsById(1L,userDto);*/
/* registerDao.deleteUser(1L);*/
}
}
Run As---1JavaApplication
App.java
package com.oehm5.hibernate;
//import java.util.List;
//import com.oehm5.hibernate.dao.RegisterDao;
import com.oehm5.hibernate.dao.RegisterHqlDao;
//import com.oehm5.hibernate.dto.UserDto;
import com.oehm5.hibernate.entity.UserRegistration;
//import com.oehm5.hibernate.entity.UserRegistration;
registerDao.updateUserDetailsById(1L,userDto);*/
/* registerDao.deleteUser(1L);*/
}
} Run As----1JavaApplication
App.java
package com.oehm5.hibernate;
//import java.util.List;
//import com.oehm5.hibernate.dao.RegisterDao;
import com.oehm5.hibernate.dao.RegisterHqlDao;
//import com.oehm5.hibernate.dto.UserDto;
//import com.oehm5.hibernate.entity.UserRegistration;
//import com.oehm5.hibernate.entity.UserRegistration;
registerDao.updateUserDetailsById(1L,userDto);*/
/* registerDao.deleteUser(1L);*/
Before Update
Run As---1JavaApplication
After Updation
App.java
package com.oehm5.hibernate;
//import java.util.List;
//import com.oehm5.hibernate.dao.RegisterDao;
import com.oehm5.hibernate.dao.RegisterHqlDao;
//import com.oehm5.hibernate.dto.UserDto;
//import com.oehm5.hibernate.entity.UserRegistration;
//import com.oehm5.hibernate.entity.UserRegistration;
registerDao.updateUserDetailsById(1L,userDto);*/
/* registerDao.deleteUser(1L);*/
Before delete
Run As---1JavaApplication
After Delete
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ans. Associations
Associated Table or
Associated Entity
Actors
If we want to have relationship in Hibernate we have:
Association:
1. One to One
Together we call: Problem of Relations(Has-a):
2. One to Many
Relationship are define in the form of Association.
3. Many to One
4. Many to Many
[In Entity class and DTO class always write Wrapper class as a data types]
Association.java
package com.oehm5.hibernate1.dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.oehm5.hibernate1.entity.Team;
session.save(team);
transaction.commit();
}
}
hibernate.cfg.xml
<mapping class="com.oehm5.hibernate1.entity.Team"></mapping>
<mapping class="com.oehm5.hibernate1.entity.Captain"></mapping>
</session-factory>
</hibernate-configuration>
Team.java
package com.oehm5.hibernate1.entity;
import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
//import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="team")
public class Team implements Serializable{
@Id
@GenericGenerator(name="team_auto", strategy = "increment")
@GeneratedValue(generator = "team_auto")
@Column(name="t_id")
private Long tId;
@Column(name="name")
private String name;
Defines the set of cascadable operations that are propagated to the
@Column(name="noOfPlayer")
private Long noOfPlayer; associated entity.
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "fr_id") //or @PrimaryKeyJoinColumn(name = “t_id”)
private Captain captain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="captain")
public class Captain implements Serializable{
@Id
@GenericGenerator(name="cap_auto", strategy = "increment")
@GeneratedValue(generator = "cap_auto")
@Column(name="c_id")
private Long cId;
@Column(name="name")
private String name;
@Column(name="jersy_number")
private String jersyNumber;
@Column(name="age")
private Long age;
@Column(name="matches_played")
private Long noMatchesPlayed;
import com.oehm5.hibernate1.dao.AssosiationDao;
import com.oehm5.hibernate1.entity.Captain;
import com.oehm5.hibernate1.entity.Team;
public class App
{
public static void main( String[] args )
{
Captain captain = new Captain();
captain.setName("ronaldo");
captain.setAge(35L);
captain.setJersyNumber("7");
captain.setNoMatchesPlayed(200L);
@OneToOne
@PrimaryKeyJoinColumn-- This annotation is use only in OneToOne Association only.
@JoinColumn-- this annotation can be used any of the association
Trainer-------- Course
Brand---------Models
Company----- employees
@OneToMany
@JoinColumn
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
import java.io.Serializable;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name = "customer")
public class Customer implements Serializable {
@Id
@GenericGenerator(name="p_auto", strategy = "increment")
@GeneratedValue(generator = "p_auto")
@Column(name="c_id")
private Long cId;
@Column(name="name")
private String name;
@Column(name="contact_number")
private String contactNumber;
@Column(name="address")
private String address;
@Column(name="payment_mode")
private String PaymentMode;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "customer_id")
private List<Product> product;
return address;
}
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="product")
public class Product implements Serializable {
@Id
@GenericGenerator(name="p_auto", strategy = "increment")
@GeneratedValue(generator = "p_auto")
@Column(name="p_id")
private Long pId;
@Column(name="price")
private Double price;
@Column(name="manufacturing_date")
private Date manufacturingDate;
@Column(name="color")
private String color;
@Column(name="quantity")
private Double quantity;
@Column(name = "name")
private String name;
}
AssosiationDao.java
package com.oehm5.hibernate1.dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.oehm5.hibernate1.entity.Customer;
import com.oehm5.hibernate1.entity.Team;
session.save(team);
transaction.commit();
}
session.save(customer);
transaction.commit();
}
}
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/framework_oehm5</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
<mapping class="com.oehm5.hibernate1.entity.Customer"></mapping>
<mapping class="com.oehm5.hibernate1.entity.Product"></mapping>
</session-factory>
</hibernate-configuration>
App.java
package com.oehm5.hibernate1;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.oehm5.hibernate1.dao.AssosiationDao;
//import com.oehm5.hibernate1.entity.Captain;
import com.oehm5.hibernate1.entity.Customer;
import com.oehm5.hibernate1.entity.Product;
//import com.oehm5.hibernate1.entity.Team;
public class App
{
public static void main( String[] args )
{
/*Captain captain = new Captain();
captain.setName("ronaldo");
captain.setAge(35L);
captain.setJersyNumber("7");
captain.setNoMatchesPlayed(200L);
list.add(product);
list.add(product1);
dao.saveOrderDetails(customer);
}
}
Create a table name: customer, product in database: framework_oehm5
RunAs------1JavaApplication
Console
customer_id column will automatically will
generate after execution of program
1. Go to product table
2. Click : Table: product
3. Then do the refresh
Example: Student-------Subject
Products ------Customers
Reader--------Subscription
Book----------Author
@ManyToMany
@JoinTable: this must used in Owning Table.
reader_subscription
r_id s_id
reader subscription
@OneToOne
@OneToMany
@ManyToOne
@ManyToMany
Relationship are define through Joins in Database, Hibernate Represent Joins in the form of Associations like OneToOne,
OneToMany, ManyToOne and ManyToMany.
Cascade:
@OneToOne:
It is bi-directional
@PrimaryKeyJoinColumn:
@JoinColumn:
@OneToMany:
@ManyToOne:
@ManyToMany:
It is used to map Collection with a Collection; either end of the association can made as owning entity.
@JoinTable:
import java.io.Serializable;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name = "reader_details")
public class ReaderEntity implements Serializable{
@Id
@GenericGenerator(name="s_auto", strategy = "increment")
@GeneratedValue(generator = "s_auto")
@Column(name="r_id")
private Long rId;
@Column(name="name")
private String name;
@Column(name="email")
private String email;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "reader_subscription",
joinColumns = {@JoinColumn(referencedColumnName = "r_id")},
inverseJoinColumns = {@JoinColumn(referencedColumnName = "s_id")})
private Set<SubscriptionEntity> subscriptions; // or List<SubscriptionEntity> subscription;
import java.io.Serializable;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="subscription")
public class SubscriptionEntity implements Serializable {
@Id
@GenericGenerator(name="s_auto", strategy = "increment")
@GeneratedValue(generator = "s_auto")
@Column(name="s_id")
private Long sId;
@Column(name="subscription_name")
private String subscriptionName;
@ManyToMany(mappedBy = "subscriptions")
private Set<ReaderEntity> reader;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.oehm5.hibernate1.entity.Customer;
import com.oehm5.hibernate1.entity.ReaderEntity;
import com.oehm5.hibernate1.entity.Team;
session.save(team);
transaction.commit();
}
session.save(customer);
transaction.commit();
}
public void saveReaderDetails(ReaderEntity readerEntity) {
session.save(readerEntity);
transaction.commit();
}
}
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/framework_oehm5</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
App.java
package com.oehm5.hibernate1;
//import java.util.ArrayList;
//import java.util.Date;
import java.util.HashSet;
//import java.util.List;
import java.util.Set;
import com.oehm5.hibernate1.dao.AssosiationDao;
//import com.oehm5.hibernate1.entity.Captain;
//import com.oehm5.hibernate1.entity.Customer;
//import com.oehm5.hibernate1.entity.Product;
import com.oehm5.hibernate1.entity.ReaderEntity;
import com.oehm5.hibernate1.entity.SubscriptionEntity;
//import com.oehm5.hibernate1.entity.Team;
public class App
{
public static void main( String[] args )
{