Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
2
20240528-BJava
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Patryk Czarnik
20240528-BJava
Commits
b847cd75
Commit
b847cd75
authored
Jun 25, 2024
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Gotowe przykłady Hibernate
parent
51d62fd2
Hide whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
2112 additions
and
0 deletions
+2112
-0
AdressInfo.java
PC30-Hibernate/src/main/java/hr/dto/AdressInfo.java
+129
-0
MiniEmp.java
PC30-Hibernate/src/main/java/hr/dto/MiniEmp.java
+85
-0
PracownikWDepartamencie.java
...bernate/src/main/java/hr/dto/PracownikWDepartamencie.java
+143
-0
Country.java
PC30-Hibernate/src/main/java/hr/model/Country.java
+57
-0
Department.java
PC30-Hibernate/src/main/java/hr/model/Department.java
+96
-0
Employee.java
PC30-Hibernate/src/main/java/hr/model/Employee.java
+152
-0
Job.java
PC30-Hibernate/src/main/java/hr/model/Job.java
+94
-0
Location.java
PC30-Hibernate/src/main/java/hr/model/Location.java
+90
-0
Region.java
PC30-Hibernate/src/main/java/hr/model/Region.java
+44
-0
WspolnaNadklasa.java
PC30-Hibernate/src/main/java/hr/model/WspolnaNadklasa.java
+5
-0
Criteria1.java
PC30-Hibernate/src/main/java/hr/programy/Criteria1.java
+38
-0
Criteria2.java
PC30-Hibernate/src/main/java/hr/programy/Criteria2.java
+52
-0
Criteria3.java
PC30-Hibernate/src/main/java/hr/programy/Criteria3.java
+47
-0
DwieBazyNaRaz.java
PC30-Hibernate/src/main/java/hr/programy/DwieBazyNaRaz.java
+36
-0
Odczyt01_JedenRekord.java
...rnate/src/main/java/hr/programy/Odczyt01_JedenRekord.java
+29
-0
Odczyt02_JedenRekord_InneTabele.java
...ain/java/hr/programy/Odczyt02_JedenRekord_InneTabele.java
+52
-0
Odczyt03_WszystkieRekordy_FindAll.java
...n/java/hr/programy/Odczyt03_WszystkieRekordy_FindAll.java
+35
-0
Odczyt04_WszystkieRekordy_Stream.java
...in/java/hr/programy/Odczyt04_WszystkieRekordy_Stream.java
+35
-0
Odczyt05_WszystkieRekordy_JPQL.java
...main/java/hr/programy/Odczyt05_WszystkieRekordy_JPQL.java
+35
-0
Odczyt06_Warunek.java
...Hibernate/src/main/java/hr/programy/Odczyt06_Warunek.java
+53
-0
Odczyt07_Skalar.java
...-Hibernate/src/main/java/hr/programy/Odczyt07_Skalar.java
+32
-0
Odczyt08_Tablica.java
...Hibernate/src/main/java/hr/programy/Odczyt08_Tablica.java
+35
-0
Odczyt09_DTO.java
PC30-Hibernate/src/main/java/hr/programy/Odczyt09_DTO.java
+33
-0
Odczyt10_Group.java
PC30-Hibernate/src/main/java/hr/programy/Odczyt10_Group.java
+29
-0
Odczyt11_Join.java
PC30-Hibernate/src/main/java/hr/programy/Odczyt11_Join.java
+32
-0
Odczyt12_WieleTabel.java
...ernate/src/main/java/hr/programy/Odczyt12_WieleTabel.java
+38
-0
Odczyt13_Native.java
...-Hibernate/src/main/java/hr/programy/Odczyt13_Native.java
+44
-0
Odczyt14_Native.java
...-Hibernate/src/main/java/hr/programy/Odczyt14_Native.java
+56
-0
Odczyt15_Native_DTO.java
...ernate/src/main/java/hr/programy/Odczyt15_Native_DTO.java
+58
-0
Odczyt16_Native_Entity.java
...ate/src/main/java/hr/programy/Odczyt16_Native_Entity.java
+34
-0
OdczytajManagerow.java
...ibernate/src/main/java/hr/programy/OdczytajManagerow.java
+46
-0
P01_OdczytajWgId.java
...Hibernate/src/main/java/hr/programy/P01_OdczytajWgId.java
+46
-0
P02_OdczytajListe_JPQL.java
...ate/src/main/java/hr/programy/P02_OdczytajListe_JPQL.java
+30
-0
P03_OdczytajListe_NamedQuery.java
...c/main/java/hr/programy/P03_OdczytajListe_NamedQuery.java
+28
-0
P04_OdczytajStream.java
...bernate/src/main/java/hr/programy/P04_OdczytajStream.java
+28
-0
P05_Warunek.java
PC30-Hibernate/src/main/java/hr/programy/P05_Warunek.java
+36
-0
P06_AktualizujRekord1.java
...nate/src/main/java/hr/programy/P06_AktualizujRekord1.java
+49
-0
P07_AktualizujRekord2.java
...nate/src/main/java/hr/programy/P07_AktualizujRekord2.java
+60
-0
P08_DodajNoweRekordy.java
...rnate/src/main/java/hr/programy/P08_DodajNoweRekordy.java
+54
-0
OdczytajListe_Stream.java
...te/src/main/java/sklep/programy/OdczytajListe_Stream.java
+22
-0
persistence.xml
PC30-Hibernate/src/main/resources/META-INF/persistence.xml
+15
-0
No files found.
PC30-Hibernate/src/main/java/hr/dto/AdressInfo.java
0 → 100644
View file @
b847cd75
package
hr
.
dto
;
import
java.math.BigDecimal
;
import
java.time.LocalDate
;
import
java.util.Objects
;
public
class
AdressInfo
{
private
int
employeeId
;
private
String
firstName
,
lastName
;
private
String
jobTitle
;
private
BigDecimal
salary
;
private
LocalDate
hireDate
;
private
String
departmentName
;
private
String
streetAddress
;
private
String
postalCode
;
private
String
city
;
private
String
country
;
public
AdressInfo
()
{
}
public
AdressInfo
(
int
employeeId
,
String
firstName
,
String
lastName
,
String
jobTitle
,
BigDecimal
salary
,
LocalDate
hireDate
,
String
departmentName
,
String
streetAddress
,
String
postalCode
,
String
city
,
String
country
)
{
this
.
employeeId
=
employeeId
;
this
.
firstName
=
firstName
;
this
.
lastName
=
lastName
;
this
.
jobTitle
=
jobTitle
;
this
.
salary
=
salary
;
this
.
hireDate
=
hireDate
;
this
.
departmentName
=
departmentName
;
this
.
streetAddress
=
streetAddress
;
this
.
postalCode
=
postalCode
;
this
.
city
=
city
;
this
.
country
=
country
;
}
public
int
getEmployeeId
()
{
return
employeeId
;
}
public
void
setEmployeeId
(
int
employeeId
)
{
this
.
employeeId
=
employeeId
;
}
public
String
getFirstName
()
{
return
firstName
;
}
public
void
setFirstName
(
String
firstName
)
{
this
.
firstName
=
firstName
;
}
public
String
getLastName
()
{
return
lastName
;
}
public
void
setLastName
(
String
lastName
)
{
this
.
lastName
=
lastName
;
}
public
String
getJobTitle
()
{
return
jobTitle
;
}
public
void
setJobTitle
(
String
jobTitle
)
{
this
.
jobTitle
=
jobTitle
;
}
public
BigDecimal
getSalary
()
{
return
salary
;
}
public
void
setSalary
(
BigDecimal
salary
)
{
this
.
salary
=
salary
;
}
public
LocalDate
getHireDate
()
{
return
hireDate
;
}
public
void
setHireDate
(
LocalDate
hireDate
)
{
this
.
hireDate
=
hireDate
;
}
public
String
getDepartmentName
()
{
return
departmentName
;
}
public
void
setDepartmentName
(
String
departmentName
)
{
this
.
departmentName
=
departmentName
;
}
public
String
getStreetAddress
()
{
return
streetAddress
;
}
public
void
setStreetAddress
(
String
streetAddress
)
{
this
.
streetAddress
=
streetAddress
;
}
public
String
getPostalCode
()
{
return
postalCode
;
}
public
void
setPostalCode
(
String
postalCode
)
{
this
.
postalCode
=
postalCode
;
}
public
String
getCity
()
{
return
city
;
}
public
void
setCity
(
String
city
)
{
this
.
city
=
city
;
}
public
String
getCountry
()
{
return
country
;
}
public
void
setCountry
(
String
country
)
{
this
.
country
=
country
;
}
@Override
public
String
toString
()
{
return
"AdressInfo [employeeId="
+
employeeId
+
", firstName="
+
firstName
+
", lastName="
+
lastName
+
", jobTitle="
+
jobTitle
+
", salary="
+
salary
+
", hireDate="
+
hireDate
+
", departmentName="
+
departmentName
+
", streetAddress="
+
streetAddress
+
", postalCode="
+
postalCode
+
", city="
+
city
+
", country="
+
country
+
"]"
;
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
city
,
country
,
departmentName
,
employeeId
,
firstName
,
hireDate
,
jobTitle
,
lastName
,
postalCode
,
salary
,
streetAddress
);
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
this
==
obj
)
return
true
;
if
(
obj
==
null
)
return
false
;
if
(
getClass
()
!=
obj
.
getClass
())
return
false
;
AdressInfo
other
=
(
AdressInfo
)
obj
;
return
Objects
.
equals
(
city
,
other
.
city
)
&&
Objects
.
equals
(
country
,
other
.
country
)
&&
Objects
.
equals
(
departmentName
,
other
.
departmentName
)
&&
employeeId
==
other
.
employeeId
&&
Objects
.
equals
(
firstName
,
other
.
firstName
)
&&
Objects
.
equals
(
hireDate
,
other
.
hireDate
)
&&
Objects
.
equals
(
jobTitle
,
other
.
jobTitle
)
&&
Objects
.
equals
(
lastName
,
other
.
lastName
)
&&
Objects
.
equals
(
postalCode
,
other
.
postalCode
)
&&
Objects
.
equals
(
salary
,
other
.
salary
)
&&
Objects
.
equals
(
streetAddress
,
other
.
streetAddress
);
}
}
PC30-Hibernate/src/main/java/hr/dto/MiniEmp.java
0 → 100644
View file @
b847cd75
package
hr
.
dto
;
import
java.math.BigDecimal
;
import
java.util.Objects
;
public
class
MiniEmp
{
private
String
firstName
,
lastName
;
private
String
jobTitle
;
private
BigDecimal
salary
;
public
MiniEmp
()
{
}
public
MiniEmp
(
String
firstName
,
String
lastName
,
String
jobTitle
,
BigDecimal
salary
)
{
this
.
firstName
=
firstName
;
this
.
lastName
=
lastName
;
this
.
jobTitle
=
jobTitle
;
this
.
salary
=
salary
;
//System.out.println("salary YES");
}
public
MiniEmp
(
String
firstName
,
String
lastName
,
String
jobTitle
)
{
this
.
firstName
=
firstName
;
this
.
lastName
=
lastName
;
this
.
jobTitle
=
jobTitle
;
//System.out.println("salary NO");
}
public
String
getFirstName
()
{
return
firstName
;
}
public
void
setFirstName
(
String
firstName
)
{
this
.
firstName
=
firstName
;
}
public
String
getLastName
()
{
return
lastName
;
}
public
void
setLastName
(
String
lastName
)
{
this
.
lastName
=
lastName
;
}
public
String
getJobTitle
()
{
return
jobTitle
;
}
public
void
setJobTitle
(
String
jobTitle
)
{
this
.
jobTitle
=
jobTitle
;
}
public
BigDecimal
getSalary
()
{
return
salary
;
}
public
void
setSalary
(
BigDecimal
salary
)
{
this
.
salary
=
salary
;
}
@Override
public
String
toString
()
{
return
"MiniEmp [firstName="
+
firstName
+
", lastName="
+
lastName
+
", jobTitle="
+
jobTitle
+
", salary="
+
salary
+
"]"
;
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
firstName
,
jobTitle
,
lastName
,
salary
);
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
this
==
obj
)
return
true
;
if
(
obj
==
null
)
return
false
;
if
(
getClass
()
!=
obj
.
getClass
())
return
false
;
MiniEmp
other
=
(
MiniEmp
)
obj
;
return
Objects
.
equals
(
firstName
,
other
.
firstName
)
&&
Objects
.
equals
(
jobTitle
,
other
.
jobTitle
)
&&
Objects
.
equals
(
lastName
,
other
.
lastName
)
&&
Objects
.
equals
(
salary
,
other
.
salary
);
}
}
PC30-Hibernate/src/main/java/hr/dto/PracownikWDepartamencie.java
0 → 100644
View file @
b847cd75
package
hr
.
dto
;
import
java.math.BigDecimal
;
import
java.util.Locale
;
import
java.util.Objects
;
import
jakarta.persistence.*
;
@Entity
public
class
PracownikWDepartamencie
{
@Id
private
int
id
;
private
String
departmentName
,
firstName
,
lastName
,
jobTitle
;
private
BigDecimal
salary
,
depAvg
;
private
int
depPos
,
globalPos
;
public
PracownikWDepartamencie
()
{
}
public
PracownikWDepartamencie
(
int
id
,
String
departmentName
,
String
firstName
,
String
lastName
,
String
jobTitle
,
BigDecimal
salary
,
BigDecimal
depAvg
,
int
depPos
,
int
globalPos
)
{
this
.
id
=
id
;
this
.
departmentName
=
departmentName
;
this
.
firstName
=
firstName
;
this
.
lastName
=
lastName
;
this
.
jobTitle
=
jobTitle
;
this
.
salary
=
salary
;
this
.
depAvg
=
depAvg
;
this
.
depPos
=
depPos
;
this
.
globalPos
=
globalPos
;
}
public
int
getId
()
{
return
id
;
}
public
void
setId
(
int
id
)
{
this
.
id
=
id
;
}
public
String
getDepartmentName
()
{
return
departmentName
;
}
public
void
setDepartmentName
(
String
departmentName
)
{
this
.
departmentName
=
departmentName
;
}
public
String
getFirstName
()
{
return
firstName
;
}
public
void
setFirstName
(
String
firstName
)
{
this
.
firstName
=
firstName
;
}
public
String
getLastName
()
{
return
lastName
;
}
public
void
setLastName
(
String
lastName
)
{
this
.
lastName
=
lastName
;
}
public
String
getJobTitle
()
{
return
jobTitle
;
}
public
void
setJobTitle
(
String
jobTitle
)
{
this
.
jobTitle
=
jobTitle
;
}
public
BigDecimal
getSalary
()
{
return
salary
;
}
public
void
setSalary
(
BigDecimal
salary
)
{
this
.
salary
=
salary
;
}
public
BigDecimal
getDepAvg
()
{
return
depAvg
;
}
public
void
setDepAvg
(
BigDecimal
depAvg
)
{
this
.
depAvg
=
depAvg
;
}
public
int
getDepPos
()
{
return
depPos
;
}
public
void
setDepPos
(
int
depPos
)
{
this
.
depPos
=
depPos
;
}
public
int
getGlobalPos
()
{
return
globalPos
;
}
public
void
setGlobalPos
(
int
globalPos
)
{
this
.
globalPos
=
globalPos
;
}
@Override
public
String
toString
()
{
return
"PracownikWDepartamencie [id="
+
id
+
", departmentName="
+
departmentName
+
", firstName="
+
firstName
+
", lastName="
+
lastName
+
", jobTitle="
+
jobTitle
+
", salary="
+
salary
+
", depAvg="
+
depAvg
+
", depPos="
+
depPos
+
", globalPos="
+
globalPos
+
"]"
;
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
depAvg
,
depPos
,
departmentName
,
firstName
,
globalPos
,
id
,
jobTitle
,
lastName
,
salary
);
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
this
==
obj
)
return
true
;
if
(
obj
==
null
)
return
false
;
if
(
getClass
()
!=
obj
.
getClass
())
return
false
;
PracownikWDepartamencie
other
=
(
PracownikWDepartamencie
)
obj
;
return
Objects
.
equals
(
depAvg
,
other
.
depAvg
)
&&
depPos
==
other
.
depPos
&&
Objects
.
equals
(
departmentName
,
other
.
departmentName
)
&&
Objects
.
equals
(
firstName
,
other
.
firstName
)
&&
globalPos
==
other
.
globalPos
&&
id
==
other
.
id
&&
Objects
.
equals
(
jobTitle
,
other
.
jobTitle
)
&&
Objects
.
equals
(
lastName
,
other
.
lastName
)
&&
Objects
.
equals
(
salary
,
other
.
salary
);
}
public
String
dajInfo
()
{
return
String
.
format
(
Locale
.
US
,
"%3d | %-12s %-12s %-33s | %8.2f | %-20s | %8.2f | %2d | %3d |"
,
id
,
firstName
,
lastName
,
"("
+
jobTitle
+
")"
,
salary
,
departmentName
,
depAvg
,
depPos
,
globalPos
);
}
public
static
String
naglowek
()
{
return
String
.
format
(
Locale
.
US
,
" id | pracownik | pensja | departament | średnia | nr | nr g|"
);
}
}
PC30-Hibernate/src/main/java/hr/model/Country.java
0 → 100644
View file @
b847cd75
package
hr
.
model
;
import
java.io.Serializable
;
import
jakarta.persistence.*
;
/**
* The persistent class for the countries database table.
*
*/
@Entity
@Table
(
name
=
"countries"
)
@NamedQuery
(
name
=
"Country.findAll"
,
query
=
"SELECT c FROM Country c"
)
public
class
Country
extends
WspolnaNadklasa
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
@Column
(
name
=
"country_id"
)
private
String
countryId
;
@Column
(
name
=
"country_name"
)
private
String
countryName
;
//uni-directional many-to-one association to Region
@ManyToOne
@JoinColumn
(
name
=
"region_id"
)
private
Region
region
;
public
Country
()
{
}
public
String
getCountryId
()
{
return
this
.
countryId
;
}
public
void
setCountryId
(
String
countryId
)
{
this
.
countryId
=
countryId
;
}
public
String
getCountryName
()
{
return
this
.
countryName
;
}
public
void
setCountryName
(
String
countryName
)
{
this
.
countryName
=
countryName
;
}
public
Region
getRegion
()
{
return
this
.
region
;
}
public
void
setRegion
(
Region
region
)
{
this
.
region
=
region
;
}
}
\ No newline at end of file
PC30-Hibernate/src/main/java/hr/model/Department.java
0 → 100644
View file @
b847cd75
package
hr
.
model
;
import
java.io.Serializable
;
import
jakarta.persistence.*
;
import
java.util.List
;
/**
* The persistent class for the departments database table.
*
*/
@Entity
@Table
(
name
=
"departments"
)
@NamedQuery
(
name
=
"Department.findAll"
,
query
=
"SELECT d FROM Department d"
)
public
class
Department
extends
WspolnaNadklasa
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"department_id"
,
insertable
=
false
,
updatable
=
false
)
private
Integer
departmentId
;
@Column
(
name
=
"department_name"
)
private
String
departmentName
;
@Column
(
name
=
"manager_id"
)
private
Integer
managerId
;
//uni-directional many-to-one association to Location
@ManyToOne
@JoinColumn
(
name
=
"location_id"
)
private
Location
location
;
//bi-directional many-to-one association to Employee
@OneToMany
(
mappedBy
=
"department"
)
private
List
<
Employee
>
employees
;
public
Department
()
{
}
public
Integer
getDepartmentId
()
{
return
this
.
departmentId
;
}
public
void
setDepartmentId
(
Integer
departmentId
)
{
this
.
departmentId
=
departmentId
;
}
public
String
getDepartmentName
()
{
return
this
.
departmentName
;
}
public
void
setDepartmentName
(
String
departmentName
)
{
this
.
departmentName
=
departmentName
;
}
public
Integer
getManagerId
()
{
return
this
.
managerId
;
}
public
void
setManagerId
(
Integer
managerId
)
{
this
.
managerId
=
managerId
;
}
public
Location
getLocation
()
{
return
this
.
location
;
}
public
void
setLocation
(
Location
location
)
{
this
.
location
=
location
;
}
public
List
<
Employee
>
getEmployees
()
{
return
this
.
employees
;
}
public
void
setEmployees
(
List
<
Employee
>
employees
)
{
this
.
employees
=
employees
;
}
public
Employee
addEmployee
(
Employee
employee
)
{
getEmployees
().
add
(
employee
);
employee
.
setDepartment
(
this
);
return
employee
;
}
public
Employee
removeEmployee
(
Employee
employee
)
{
getEmployees
().
remove
(
employee
);
employee
.
setDepartment
(
null
);
return
employee
;
}
}
\ No newline at end of file
PC30-Hibernate/src/main/java/hr/model/Employee.java
0 → 100644
View file @
b847cd75
package
hr
.
model
;
import
java.io.Serializable
;
import
jakarta.persistence.*
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* The persistent class for the employees database table.
*
*/
@Entity
@Table
(
name
=
"employees"
)
@NamedQuery
(
name
=
"Employee.findAll"
,
query
=
"SELECT e FROM Employee e"
)
public
class
Employee
extends
WspolnaNadklasa
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"employee_id"
,
insertable
=
false
,
updatable
=
false
)
private
Integer
employeeId
;
@Column
(
name
=
"commission_pct"
)
private
Double
commissionPct
;
private
String
email
;
@Column
(
name
=
"first_name"
)
private
String
firstName
;
@Temporal
(
TemporalType
.
DATE
)
@Column
(
name
=
"hire_date"
)
private
Date
hireDate
;
@Column
(
name
=
"last_name"
)
private
String
lastName
;
@Column
(
name
=
"phone_number"
)
private
String
phoneNumber
;
private
BigDecimal
salary
;
//bi-directional many-to-one association to Department
@ManyToOne
@JoinColumn
(
name
=
"department_id"
)
private
Department
department
;
//uni-directional many-to-one association to Employee
// obiekt manager nie jest od razu wczytywany, tylko gdyby ktoś bezpośrednio pobrał za pomocą getManager()
@ManyToOne
(
fetch
=
FetchType
.
LAZY
)
@JoinColumn
(
name
=
"manager_id"
)
private
Employee
manager
;
//bi-directional many-to-one association to Job
@ManyToOne
@JoinColumn
(
name
=
"job_id"
)
private
Job
job
;
public
Employee
()
{
}
public
Integer
getEmployeeId
()
{
return
this
.
employeeId
;
}
public
void
setEmployeeId
(
Integer
employeeId
)
{
this
.
employeeId
=
employeeId
;
}
public
Double
getCommissionPct
()
{
return
this
.
commissionPct
;
}
public
void
setCommissionPct
(
Double
commissionPct
)
{
this
.
commissionPct
=
commissionPct
;
}
public
String
getEmail
()
{
return
this
.
email
;
}
public
void
setEmail
(
String
email
)
{
this
.
email
=
email
;
}
public
String
getFirstName
()
{
return
this
.
firstName
;
}
public
void
setFirstName
(
String
firstName
)
{
this
.
firstName
=
firstName
;
}
public
Date
getHireDate
()
{
return
this
.
hireDate
;
}
public
void
setHireDate
(
Date
hireDate
)
{
this
.
hireDate
=
hireDate
;
}
public
String
getLastName
()
{
return
this
.
lastName
;
}
public
void
setLastName
(
String
lastName
)
{
this
.
lastName
=
lastName
;
}
public
String
getPhoneNumber
()
{
return
this
.
phoneNumber
;
}
public
void
setPhoneNumber
(
String
phoneNumber
)
{
this
.
phoneNumber
=
phoneNumber
;
}
public
BigDecimal
getSalary
()
{
return
this
.
salary
;
}
public
void
setSalary
(
BigDecimal
salary
)
{
this
.
salary
=
salary
;
}
public
Department
getDepartment
()
{
return
this
.
department
;
}
public
void
setDepartment
(
Department
department
)
{
this
.
department
=
department
;
}
public
Employee
getManager
()
{
return
this
.
manager
;
}
public
void
setManager
(
Employee
manager
)
{
this
.
manager
=
manager
;
}
public
Job
getJob
()
{
return
this
.
job
;
}
public
void
setJob
(
Job
job
)
{
this
.
job
=
job
;
}
}
\ No newline at end of file
PC30-Hibernate/src/main/java/hr/model/Job.java
0 → 100644
View file @
b847cd75
package
hr
.
model
;
import
java.io.Serializable
;
import
jakarta.persistence.*
;
import
java.math.BigDecimal
;
import
java.util.List
;
/**
* The persistent class for the jobs database table.
*
*/
@Entity
@Table
(
name
=
"jobs"
)
@NamedQuery
(
name
=
"Job.findAll"
,
query
=
"SELECT j FROM Job j"
)
public
class
Job
extends
WspolnaNadklasa
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
@Column
(
name
=
"job_id"
,
updatable
=
false
)
private
String
jobId
;
@Column
(
name
=
"job_title"
)
private
String
jobTitle
;
@Column
(
name
=
"max_salary"
)
private
BigDecimal
maxSalary
;
@Column
(
name
=
"min_salary"
)
private
BigDecimal
minSalary
;
//bi-directional many-to-one association to Employee
@OneToMany
(
mappedBy
=
"job"
)
private
List
<
Employee
>
employees
;
public
Job
()
{
}
public
String
getJobId
()
{
return
this
.
jobId
;
}
public
void
setJobId
(
String
jobId
)
{
this
.
jobId
=
jobId
;
}
public
String
getJobTitle
()
{
return
this
.
jobTitle
;
}
public
void
setJobTitle
(
String
jobTitle
)
{
this
.
jobTitle
=
jobTitle
;
}
public
BigDecimal
getMaxSalary
()
{
return
this
.
maxSalary
;
}
public
void
setMaxSalary
(
BigDecimal
maxSalary
)
{
this
.
maxSalary
=
maxSalary
;
}
public
BigDecimal
getMinSalary
()
{
return
this
.
minSalary
;
}
public
void
setMinSalary
(
BigDecimal
minSalary
)
{
this
.
minSalary
=
minSalary
;
}
public
List
<
Employee
>
getEmployees
()
{
return
this
.
employees
;
}
public
void
setEmployees
(
List
<
Employee
>
employees
)
{
this
.
employees
=
employees
;
}
public
Employee
addEmployee
(
Employee
employee
)
{
getEmployees
().
add
(
employee
);
employee
.
setJob
(
this
);
return
employee
;
}
public
Employee
removeEmployee
(
Employee
employee
)
{
getEmployees
().
remove
(
employee
);
employee
.
setJob
(
null
);
return
employee
;
}
}
\ No newline at end of file
PC30-Hibernate/src/main/java/hr/model/Location.java
0 → 100644
View file @
b847cd75
package
hr
.
model
;
import
java.io.Serializable
;
import
jakarta.persistence.*
;
/**
* The persistent class for the locations database table.
*
*/
@Entity
@Table
(
name
=
"locations"
)
@NamedQuery
(
name
=
"Location.findAll"
,
query
=
"SELECT l FROM Location l"
)
public
class
Location
extends
WspolnaNadklasa
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"location_id"
,
insertable
=
false
,
updatable
=
false
)
private
Integer
locationId
;
private
String
city
;
@Column
(
name
=
"postal_code"
)
private
String
postalCode
;
@Column
(
name
=
"state_province"
)
private
String
stateProvince
;
@Column
(
name
=
"street_address"
)
private
String
streetAddress
;
//uni-directional many-to-one association to Country
@ManyToOne
@JoinColumn
(
name
=
"country_id"
)
private
Country
country
;
public
Location
()
{
}
public
Integer
getLocationId
()
{
return
this
.
locationId
;
}
public
void
setLocationId
(
Integer
locationId
)
{
this
.
locationId
=
locationId
;
}
public
String
getCity
()
{
return
this
.
city
;
}
public
void
setCity
(
String
city
)
{
this
.
city
=
city
;
}
public
String
getPostalCode
()
{
return
this
.
postalCode
;
}
public
void
setPostalCode
(
String
postalCode
)
{
this
.
postalCode
=
postalCode
;
}
public
String
getStateProvince
()
{
return
this
.
stateProvince
;
}
public
void
setStateProvince
(
String
stateProvince
)
{
this
.
stateProvince
=
stateProvince
;
}
public
String
getStreetAddress
()
{
return
this
.
streetAddress
;
}
public
void
setStreetAddress
(
String
streetAddress
)
{
this
.
streetAddress
=
streetAddress
;
}
public
Country
getCountry
()
{
return
this
.
country
;
}
public
void
setCountry
(
Country
country
)
{
this
.
country
=
country
;
}
}
\ No newline at end of file
PC30-Hibernate/src/main/java/hr/model/Region.java
0 → 100644
View file @
b847cd75
package
hr
.
model
;
import
java.io.Serializable
;
import
jakarta.persistence.*
;
/**
* The persistent class for the regions database table.
*
*/
@Entity
@Table
(
name
=
"regions"
)
@NamedQuery
(
name
=
"Region.findAll"
,
query
=
"SELECT r FROM Region r"
)
public
class
Region
extends
WspolnaNadklasa
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
@Column
(
name
=
"region_id"
,
updatable
=
false
)
private
Integer
regionId
;
@Column
(
name
=
"region_name"
)
private
String
regionName
;
public
Region
()
{
}
public
Integer
getRegionId
()
{
return
this
.
regionId
;
}
public
void
setRegionId
(
Integer
regionId
)
{
this
.
regionId
=
regionId
;
}
public
String
getRegionName
()
{
return
this
.
regionName
;
}
public
void
setRegionName
(
String
regionName
)
{
this
.
regionName
=
regionName
;
}
}
\ No newline at end of file
PC30-Hibernate/src/main/java/hr/model/WspolnaNadklasa.java
0 → 100644
View file @
b847cd75
package
hr
.
model
;
abstract
class
WspolnaNadklasa
{
}
PC30-Hibernate/src/main/java/hr/programy/Criteria1.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.List
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
import
jakarta.persistence.criteria.CriteriaBuilder
;
import
jakarta.persistence.criteria.CriteriaQuery
;
import
jakarta.persistence.criteria.Root
;
import
hr.model.Employee
;
public
class
Criteria1
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
EntityManager
em
=
emf
.
createEntityManager
();
CriteriaBuilder
cb
=
em
.
getCriteriaBuilder
();
CriteriaQuery
<
Employee
>
cq
=
cb
.
createQuery
(
Employee
.
class
);
// typ wyniku
Root
<
Employee
>
root
=
cq
.
from
(
Employee
.
class
);
// tabela źródłowa
cq
.
select
(
root
);
TypedQuery
<
Employee
>
query
=
em
.
createQuery
(
cq
);
List
<
Employee
>
lista
=
query
.
getResultList
();
System
.
out
.
println
(
"Odczytano "
+
lista
.
size
()
+
" rekordów."
);
for
(
Employee
emp
:
lista
)
{
System
.
out
.
printf
(
"%-15s %-15s %8s %s\n"
,
emp
.
getFirstName
(),
emp
.
getLastName
(),
emp
.
getSalary
(),
emp
.
getJob
().
getJobTitle
());
}
em
.
close
();
emf
.
close
();
}
}
PC30-Hibernate/src/main/java/hr/programy/Criteria2.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
import
jakarta.persistence.criteria.CriteriaBuilder
;
import
jakarta.persistence.criteria.CriteriaQuery
;
import
jakarta.persistence.criteria.Root
;
import
hr.model.Employee
;
public
class
Criteria2
{
public
static
void
main
(
String
[]
args
)
{
BigDecimal
minSalary
=
new
BigDecimal
(
10000
);
EntityManagerFactory
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
EntityManager
em
=
emf
.
createEntityManager
();
CriteriaBuilder
cb
=
em
.
getCriteriaBuilder
();
// podajmey klasę dla wyników
CriteriaQuery
<
Employee
>
cq
=
cb
.
createQuery
(
Employee
.
class
);
// podajemy encję / tabelę źródłową, od której zapytanie startuje
Root
<
Employee
>
root
=
cq
.
from
(
Employee
.
class
);
// tak jakby dopisywanie kolejnych fragmentów zapytania
cq
.
select
(
root
);
cq
.
where
(
cb
.
ge
(
root
.
get
(
"salary"
),
minSalary
));
cq
.
orderBy
(
cb
.
desc
(
root
.
get
(
"salary"
)));
// Tutaj zastosowałem tworzenie kryteriów "dynamicznie" na podstawie nazw kolumn
// Istnieje też możliwość wygenerowanie "metamodelu" i posługiwania się nim
TypedQuery
<
Employee
>
query
=
em
.
createQuery
(
cq
);
List
<
Employee
>
lista
=
query
.
getResultList
();
System
.
out
.
println
(
"Odczytano "
+
lista
.
size
()
+
" rekordów."
);
for
(
Employee
emp
:
lista
)
{
System
.
out
.
printf
(
"%-15s %-15s %8s %s\n"
,
emp
.
getFirstName
(),
emp
.
getLastName
(),
emp
.
getSalary
(),
emp
.
getJob
().
getJobTitle
());
}
em
.
close
();
emf
.
close
();
}
}
PC30-Hibernate/src/main/java/hr/programy/Criteria3.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
import
jakarta.persistence.criteria.CriteriaBuilder
;
import
jakarta.persistence.criteria.CriteriaQuery
;
import
jakarta.persistence.criteria.Root
;
import
hr.model.Employee
;
public
class
Criteria3
{
public
static
void
main
(
String
[]
args
)
{
BigDecimal
minSalary
=
new
BigDecimal
(
4000
);
String
szukaneMiasto
=
"Seattle"
;
EntityManagerFactory
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
EntityManager
em
=
emf
.
createEntityManager
();
CriteriaBuilder
cb
=
em
.
getCriteriaBuilder
();
CriteriaQuery
<
Employee
>
cq
=
cb
.
createQuery
(
Employee
.
class
);
Root
<
Employee
>
root
=
cq
.
from
(
Employee
.
class
);
cq
.
select
(
root
);
cq
.
where
(
cb
.
and
(
cb
.
ge
(
root
.
get
(
"salary"
),
minSalary
),
cb
.
equal
(
root
.
get
(
"department"
).
get
(
"location"
).
get
(
"city"
),
szukaneMiasto
)));
cq
.
orderBy
(
cb
.
desc
(
root
.
get
(
"salary"
)));
TypedQuery
<
Employee
>
query
=
em
.
createQuery
(
cq
);
List
<
Employee
>
lista
=
query
.
getResultList
();
System
.
out
.
println
(
"Odczytano "
+
lista
.
size
()
+
" rekordów."
);
for
(
Employee
emp
:
lista
)
{
String
miasto
=
emp
.
getDepartment
()
==
null
?
"-"
:
emp
.
getDepartment
().
getLocation
().
getCity
();
System
.
out
.
printf
(
"%-15s %-15s %-10s %8s %s\n"
,
emp
.
getFirstName
(),
emp
.
getLastName
(),
miasto
,
emp
.
getSalary
(),
emp
.
getJob
().
getJobTitle
());
}
em
.
close
();
emf
.
close
();
}
}
PC30-Hibernate/src/main/java/hr/programy/DwieBazyNaRaz.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
hr.model.Employee
;
import
sklep.model.Product
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
public
class
DwieBazyNaRaz
{
public
static
void
main
(
String
[]
args
)
{
try
(
EntityManagerFactory
sklep_emf
=
Persistence
.
createEntityManagerFactory
(
"sklep_pu"
);
EntityManagerFactory
hr_emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
EntityManager
sklep_em
=
sklep_emf
.
createEntityManager
();
EntityManager
hr_em
=
hr_emf
.
createEntityManager
())
{
System
.
out
.
println
(
"Oba managery gotowe"
);
int
employeeId
=
100
;
int
productId
=
1
;
Employee
employee
=
hr_em
.
find
(
Employee
.
class
,
employeeId
);
Product
product
=
sklep_em
.
find
(
Product
.
class
,
productId
);
BigDecimal
ilosc
=
employee
.
getSalary
().
divide
(
product
.
getPrice
(),
1
,
RoundingMode
.
HALF_UP
);
System
.
out
.
printf
(
"Pracownik %s %s zarabia %s i może kupić %s sztuk produktu %s\n."
,
employee
.
getFirstName
(),
employee
.
getLastName
(),
employee
.
getSalary
(),
ilosc
,
product
.
getProductName
());
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt01_JedenRekord.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
hr.model.Employee
;
public
class
Odczyt01_JedenRekord
{
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
"Początek"
);
EntityManagerFactory
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
EntityManager
em
=
emf
.
createEntityManager
();
System
.
out
.
println
(
"Udało się połączyć, em = "
+
em
);
Employee
emp
=
em
.
find
(
Employee
.
class
,
100
);
if
(
emp
==
null
)
{
System
.
out
.
println
(
"nie znaleziono"
);
}
else
{
System
.
out
.
println
(
emp
.
getFirstName
()
+
" "
+
emp
.
getLastName
());
}
em
.
close
();
emf
.
close
();
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt02_JedenRekord_InneTabele.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.Scanner
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
hr.model.Department
;
import
hr.model.Employee
;
public
class
Odczyt02_JedenRekord_InneTabele
{
public
static
void
main
(
String
[]
args
)
{
Scanner
sc
=
new
Scanner
(
System
.
in
);
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
System
.
out
.
println
(
"Udało się połączyć, em = "
+
em
);
while
(
true
)
{
System
.
out
.
print
(
"Podaj id pracownika: "
);
if
(!
sc
.
hasNextInt
())
break
;
int
id
=
sc
.
nextInt
();
Employee
emp
=
em
.
find
(
Employee
.
class
,
id
);
if
(
emp
==
null
)
{
System
.
out
.
println
(
"nie znaleziono"
);
}
else
{
System
.
out
.
println
(
emp
.
getFirstName
()
+
" "
+
emp
.
getLastName
()
+
" $"
+
emp
.
getSalary
());
System
.
out
.
println
(
"job: "
+
emp
.
getJob
().
getJobTitle
());
Department
department
=
emp
.
getDepartment
();
if
(
department
!=
null
)
{
System
.
out
.
println
(
"departament: "
+
department
.
getDepartmentName
());
System
.
out
.
println
(
"adres: "
+
department
.
getLocation
().
getStreetAddress
()
+
" "
+
department
.
getLocation
().
getCity
()
+
" "
+
department
.
getLocation
().
getCountry
().
getCountryName
());
}
System
.
out
.
println
();
}
}
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt03_WszystkieRekordy_FindAll.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.List
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
import
hr.model.Employee
;
public
class
Odczyt03_WszystkieRekordy_FindAll
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
TypedQuery
<
Employee
>
query
=
em
.
createNamedQuery
(
"Employee.findAll"
,
Employee
.
class
);
// Wczytuje wszystkie dane od razu do pamięci
List
<
Employee
>
lista
=
query
.
getResultList
();
System
.
out
.
println
(
"Ilość rekordów "
+
lista
.
size
());
for
(
Employee
employee
:
lista
)
{
System
.
out
.
println
(
employee
.
getFirstName
()
+
" "
+
employee
.
getLastName
());
}
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt04_WszystkieRekordy_Stream.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.stream.Stream
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
import
hr.model.Employee
;
public
class
Odczyt04_WszystkieRekordy_Stream
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
TypedQuery
<
Employee
>
query
=
em
.
createNamedQuery
(
"Employee.findAll"
,
Employee
.
class
);
// Używając Stream zamiast List pobieramy dane "strumieniowo", czyli pojedynczo i przetwarzamy na bieżąco.
Stream
<
Employee
>
stream
=
query
.
getResultStream
();
stream
.
forEach
(
emp
->
{
System
.
out
.
println
(
emp
.
getFirstName
()
+
" "
+
emp
.
getLastName
());
});
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt05_WszystkieRekordy_JPQL.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.List
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
import
hr.model.Employee
;
public
class
Odczyt05_WszystkieRekordy_JPQL
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
TypedQuery
<
Employee
>
query
=
em
.
createQuery
(
"SELECT emp FROM Employee emp"
,
Employee
.
class
);
List
<
Employee
>
lista
=
query
.
getResultList
();
System
.
out
.
println
(
"Ilość rekordów "
+
lista
.
size
());
for
(
Employee
employee
:
lista
)
{
System
.
out
.
println
(
employee
.
getFirstName
()
+
" "
+
employee
.
getLastName
());
}
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt06_Warunek.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.List
;
import
javax.swing.JOptionPane
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
import
hr.model.Employee
;
public
class
Odczyt06_Warunek
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
String
kogoSzukam
=
JOptionPane
.
showInputDialog
(
"Podaj kod stanowiska"
);
// to działało:
// TypedQuery<Employee> query = em.createQuery("SELECT emp FROM Employee emp WHERE job.jobId = ?1", Employee.class);
// query.setParameter(1, kogoSzukam);
// ale to już nie ("legacy parameter style"):
// TypedQuery<Employee> query = em.createQuery("SELECT emp FROM Employee emp WHERE job.jobId = ?", Employee.class);
// query.setParameter(1, kogoSzukam);
// wszystkie trzy zapisy zadziałały:
// TypedQuery<Employee> query = em.createQuery("SELECT emp FROM Employee emp WHERE job_id = :kto", Employee.class);
// TypedQuery<Employee> query = em.createQuery("SELECT emp FROM Employee emp WHERE job.jobId = :kto", Employee.class);
TypedQuery
<
Employee
>
query
=
em
.
createQuery
(
"SELECT emp FROM Employee emp WHERE emp.job.jobId = :kto"
,
Employee
.
class
);
query
.
setParameter
(
"kto"
,
kogoSzukam
);
List
<
Employee
>
lista
=
query
.
getResultList
();
System
.
out
.
println
(
"Ilość rekordów "
+
lista
.
size
());
for
(
Employee
employee
:
lista
)
{
System
.
out
.
println
(
employee
.
getFirstName
()
+
" "
+
employee
.
getLastName
());
//System.out.println(employee.getJob());
}
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt07_Skalar.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.List
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
public
class
Odczyt07_Skalar
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
TypedQuery
<
String
>
query
=
em
.
createQuery
(
"SELECT e.lastName FROM Employee e ORDER BY 1"
,
String
.
class
);
// też działa:
// TypedQuery<String> query = em.createQuery("SELECT lastName FROM Employee ORDER BY lastName", String.class);
List
<
String
>
names
=
query
.
getResultList
();
for
(
String
name
:
names
)
{
System
.
out
.
println
(
name
);
}
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt08_Tablica.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.Arrays
;
import
java.util.List
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
public
class
Odczyt08_Tablica
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
TypedQuery
<
Object
[]>
query
=
em
.
createQuery
(
"SELECT e.firstName, e.lastName, e.job.jobTitle, e.salary, e.department.departmentName, e.department.location.city FROM Employee e"
,
Object
[].
class
);
List
<
Object
[]>
rows
=
query
.
getResultList
();
for
(
Object
[]
emp
:
rows
)
{
System
.
out
.
println
(
Arrays
.
toString
(
emp
));
}
System
.
out
.
println
(
"\nSprawdzę typy kolumn:"
);
Object
[]
row
=
(
Object
[])
rows
.
get
(
0
);
System
.
out
.
println
(
row
[
0
].
getClass
().
getSimpleName
()
+
" "
+
row
[
2
].
getClass
().
getSimpleName
()
+
" "
+
row
[
3
].
getClass
().
getSimpleName
());
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt09_DTO.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.List
;
import
hr.dto.MiniEmp
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
public
class
Odczyt09_DTO
{
// Przykład zastosowania techniki (wzorca projektowego?...) DTO (data transfer object).
// Klasa DTO pełni rolę pomocniczą, nie stanowi głównego modelu aplikacji.
// Obiekty tej klasy służą przekazywaniu parametrów, zwracaniu wyników z metod,
// np. zbieraniu danych z formularza webowego lub - tak jak tutaj - zbieraniu wyników zapytania bazodanowego.
// Technicznie rzecz biorąc: w JPQL można użyć NEW aby stworzyć obiekt za pomocą konstruktora.
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
TypedQuery
<
MiniEmp
>
query
=
em
.
createQuery
(
"SELECT new dto.MiniEmp(e.firstName, e.lastName, e.job.jobTitle, e.salary) FROM Employee e"
,
MiniEmp
.
class
);
List
<
MiniEmp
>
emps
=
query
.
getResultList
();
for
(
MiniEmp
emp
:
emps
)
{
System
.
out
.
println
(
emp
);
}
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt10_Group.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.Arrays
;
import
java.util.List
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
public
class
Odczyt10_Group
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
TypedQuery
<
Object
[]>
query
=
em
.
createQuery
(
"SELECT e.job.jobTitle, count(*), avg(e.salary) FROM Employee e GROUP BY e.job.jobTitle"
,
Object
[].
class
);
List
<
Object
[]>
emps
=
query
.
getResultList
();
for
(
Object
[]
emp
:
emps
)
{
System
.
out
.
println
(
Arrays
.
toString
(
emp
));
}
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt11_Join.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.Arrays
;
import
java.util.List
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
public
class
Odczyt11_Join
{
// Przykład JOIN zapisanego w składni JPQL - "przechodzenie po dowiązaniach".
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
System
.
out
.
println
(
"Odczyt..."
);
TypedQuery
<
Object
[]>
query
=
em
.
createQuery
(
"SELECT e.firstName, e.lastName, d.departmentName, l.city"
+
" FROM Employee e LEFT JOIN e.department d LEFT JOIN d.location l"
,
Object
[].
class
);
List
<
Object
[]>
emps
=
query
.
getResultList
();
for
(
Object
[]
emp
:
emps
)
{
System
.
out
.
println
(
Arrays
.
toString
(
emp
));
}
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt12_WieleTabel.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.List
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
import
hr.model.Employee
;
public
class
Odczyt12_WieleTabel
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
TypedQuery
<
Object
[]>
query
=
em
.
createQuery
(
"SELECT DISTINCT emp, loc.city"
+
" FROM Employee emp, Location loc"
+
" WHERE substring(emp.lastName, 1, 1) = substring(loc.city, 1, 1)"
+
" ORDER BY emp.lastName, emp.firstName"
,
Object
[].
class
);
List
<
Object
[]>
results
=
query
.
getResultList
();
System
.
out
.
println
(
results
.
size
());
for
(
Object
[]
tab
:
results
)
{
Employee
emp
=
(
Employee
)
tab
[
0
];
String
city
=
(
String
)
tab
[
1
];
System
.
out
.
printf
(
"%-20s %-20s %-20s\n"
,
emp
.
getFirstName
(),
emp
.
getLastName
(),
city
);
}
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt13_Native.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.List
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.Query
;
// Prosty przykład native query.
// Wynik odczytywany jako lista wierszy, każdy wiersz jako Object[].
public
class
Odczyt13_Native
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
Query
query
=
em
.
createNativeQuery
(
"SELECT first_name || ' ' || last_name, job_title, salary FROM employees JOIN jobs USING(job_id) ORDER BY employee_id"
);
List
<?>
rows
=
query
.
getResultList
();
for
(
Object
row
:
rows
)
{
// na wszelki wypadek sprawdzam, ale widzę, że Object[] działa
if
(
row
instanceof
Object
[])
{
Object
[]
cols
=
(
Object
[])
row
;
System
.
out
.
println
(
cols
[
0
]
+
" pracuje jako "
+
cols
[
1
]
+
" i zarabia "
+
cols
[
2
]);
}
}
System
.
out
.
println
();
// Biorę pierwszy wiersz i (informacyjnie, dla nas podczas nauki) sprawdzam typy kolumn. Zauważmy, że kolumna salary jest mapowana na BigDecimal.
System
.
out
.
println
(
"Sprawdzę typy kolumn:"
);
Object
[]
row
=
(
Object
[])
rows
.
get
(
0
);
System
.
out
.
println
(
row
[
0
].
getClass
().
getSimpleName
()
+
" "
+
row
[
1
].
getClass
().
getSimpleName
()
+
" "
+
row
[
2
].
getClass
().
getSimpleName
());
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt14_Native.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.Arrays
;
import
java.util.List
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.Query
;
// Sensowny przykład native query.
// Pokazuję, że dzięki niemu można skorzystać z funkcji konkretnej bazy danych.
// Tutaj (z dokumentacją przed nosem ;) ) wykombinowałem zapytanie z "funkcjami okienkowymi"
// - funkcjonalność znana głównie w Oracle, dostępna także w PostgreSQL.
public
class
Odczyt14_Native
{
public
static
void
main
(
String
[]
args
)
{
final
String
sql
=
"""
SELECT employee_id AS "
id
",
department_name AS "
departmentName
",
first_name AS "
firstName
",
last_name AS "
lastName
",
job_title AS "
jobTitle
",
salary AS "
salary
",
round(avg(salary) OVER (PARTITION BY department_id), 2) AS "
depAvg
",
round(salary - avg(salary) OVER (PARTITION BY department_id), 2) AS "
diff
",
rank() OVER (PARTITION BY department_id ORDER BY salary DESC) AS "
depPos
",
rank() OVER (ORDER BY salary DESC) AS "
globalPos
"
FROM departments d
INNER JOIN employees e USING(department_id)
INNER JOIN jobs j USING(job_id)
ORDER BY 7 DESC, 2, 6 DESC, 4 ASC, 3 ASC
"""
;
System
.
out
.
println
(
sql
);
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
Query
query
=
em
.
createNativeQuery
(
sql
);
List
<?>
rows
=
query
.
getResultList
();
for
(
Object
row
:
rows
)
{
if
(
row
instanceof
Object
[])
{
Object
[]
cols
=
(
Object
[])
row
;
System
.
out
.
println
(
Arrays
.
toString
(
cols
));
}
}
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt15_Native_DTO.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.List
;
import
hr.dto.PracownikWDepartamencie
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.Query
;
// Sensowny przykład native query.
// Pokazuję, że dzięki niemu można skorzystać z funkcji konkretnej bazy danych.
// Tutaj (z dokumentacją przed nosem ;) ) wykombinowałem zapytanie z "funkcjami okienkowymi"
// - funkcjonalność znana głównie w Oracle, dostępna także w PostgreSQL.
// W tej wersji dodatkowo wyniki pakuję do własnej klasy PracownikWDepartamencie
public
class
Odczyt15_Native_DTO
{
public
static
void
main
(
String
[]
args
)
{
final
String
sql
=
"""
SELECT employee_id AS "
id
",
department_name AS "
departmentName
",
first_name AS "
firstName
",
last_name AS "
lastName
",
job_title AS "
jobTitle
",
salary AS "
salary
",
round(avg(salary) OVER (PARTITION BY department_id), 2) AS "
depAvg
",
rank() OVER (PARTITION BY department_id ORDER BY salary DESC) AS "
depPos
",
rank() OVER (ORDER BY salary DESC) AS "
globalPos
"
FROM departments d
INNER JOIN employees e USING(department_id)
INNER JOIN jobs j USING(job_id)
ORDER BY 7 DESC, 2, 6 DESC, 4 ASC, 3 ASC
"""
;
System
.
out
.
println
(
sql
);
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
Query
query
=
em
.
createNativeQuery
(
sql
,
PracownikWDepartamencie
.
class
);
List
<?>
rows
=
query
.
getResultList
();
System
.
out
.
println
(
PracownikWDepartamencie
.
naglowek
());
for
(
Object
row
:
rows
)
{
//System.out.println(row);
PracownikWDepartamencie
p
=
(
PracownikWDepartamencie
)
row
;
System
.
out
.
println
(
p
.
dajInfo
());
}
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/Odczyt16_Native_Entity.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.List
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.Query
;
import
hr.model.Country
;
// Wracając do prostszych rzeczy: Wynik native query można bez problemu odczytać jako normalną encję.
public
class
Odczyt16_Native_Entity
{
public
static
void
main
(
String
[]
args
)
{
final
String
sql
=
"SELECT * FROM countries"
;
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
Query
query
=
em
.
createNativeQuery
(
sql
,
Country
.
class
);
List
<
Country
>
rows
=
(
List
<
Country
>)
query
.
getResultList
();
for
(
Country
country
:
rows
)
{
System
.
out
.
println
(
country
.
getCountryId
()
+
" "
+
country
.
getCountryName
());
}
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/OdczytajManagerow.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.Scanner
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
hr.model.Employee
;
public
class
OdczytajManagerow
{
public
static
void
main
(
String
[]
args
)
{
Scanner
sc
=
new
Scanner
(
System
.
in
);
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
while
(
true
)
{
System
.
out
.
print
(
"\nPodaj id pracownika: "
);
if
(!
sc
.
hasNextInt
())
break
;
int
id
=
sc
.
nextInt
();
Employee
emp
=
em
.
find
(
Employee
.
class
,
id
);
if
(
emp
==
null
)
{
System
.
out
.
println
(
"nie znaleziono takiego pracownika"
);
continue
;
}
while
(
emp
!=
null
)
{
System
.
out
.
println
(
" "
+
emp
.
getEmployeeId
()
+
" "
+
emp
.
getFirstName
()
+
" "
+
emp
.
getLastName
()
+
"("
+
emp
.
getJob
().
getJobTitle
()
+
")"
+
" $"
+
emp
.
getSalary
());
emp
=
emp
.
getManager
();
System
.
out
.
println
(
"Managerem jest:"
);
}
}
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/P01_OdczytajWgId.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.Scanner
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
hr.model.Department
;
import
hr.model.Employee
;
public
class
P01_OdczytajWgId
{
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
"Startujemy..."
);
EntityManagerFactory
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
EntityManager
em
=
emf
.
createEntityManager
();
System
.
out
.
println
(
"Mam EntityManagera: "
+
em
);
Scanner
sc
=
new
Scanner
(
System
.
in
);
while
(
true
)
{
System
.
out
.
print
(
"\nPodaj ID pracownika (0 kończy program): "
);
Integer
id
=
sc
.
nextInt
();
if
(
id
==
0
)
break
;
Employee
emp
=
em
.
find
(
Employee
.
class
,
id
);
System
.
out
.
println
(
"Odczytany obiekt: "
+
emp
);
if
(
emp
==
null
)
{
System
.
out
.
printf
(
"Nie ma pracownika o id %d\n"
,
id
);
continue
;
}
System
.
out
.
printf
(
"%s %s (%s) zarabia %s\n"
,
emp
.
getFirstName
(),
emp
.
getLastName
(),
emp
.
getJob
().
getJobTitle
(),
emp
.
getSalary
());
Department
dep
=
emp
.
getDepartment
();
if
(
dep
!=
null
)
{
System
.
out
.
printf
(
"Departament %s, %s, %s, %s\n"
,
dep
.
getDepartmentName
(),
dep
.
getLocation
().
getStreetAddress
(),
dep
.
getLocation
().
getCity
(),
dep
.
getLocation
().
getCountry
().
getCountryName
());
}
}
sc
.
close
();
em
.
close
();
emf
.
close
();
System
.
out
.
println
(
"Koniec"
);
}
}
PC30-Hibernate/src/main/java/hr/programy/P02_OdczytajListe_JPQL.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.List
;
import
hr.model.Location
;
import
jakarta.persistence.*
;
import
hr.model.*
;
public
class
P02_OdczytajListe_JPQL
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
// JPQL = Java Persistence Query Language
TypedQuery
<
Location
>
query
=
em
.
createQuery
(
"SELECT loc FROM Location loc ORDER BY loc.country.countryId, loc.city"
,
Location
.
class
);
List
<
Location
>
locations
=
query
.
getResultList
();
for
(
Location
loc
:
locations
)
{
System
.
out
.
printf
(
" - %s, %s %s, %s\n"
,
loc
.
getStreetAddress
(),
loc
.
getPostalCode
(),
loc
.
getCity
(),
loc
.
getCountry
().
getCountryName
());
}
}
finally
{
em
.
close
();
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/P03_OdczytajListe_NamedQuery.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.List
;
import
hr.model.Location
;
import
jakarta.persistence.*
;
public
class
P03_OdczytajListe_NamedQuery
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
TypedQuery
<
Location
>
query
=
em
.
createNamedQuery
(
"Location.findAll"
,
Location
.
class
);
List
<
Location
>
locations
=
query
.
getResultList
();
for
(
Location
loc
:
locations
)
{
System
.
out
.
printf
(
" - %s, %s %s, %s\n"
,
loc
.
getStreetAddress
(),
loc
.
getPostalCode
(),
loc
.
getCity
(),
loc
.
getCountry
().
getCountryName
());
}
}
finally
{
em
.
close
();
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/P04_OdczytajStream.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
hr.model.Location
;
public
class
P04_OdczytajStream
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
// Zapis z użyciem strumienia może dać lepszą wydajność. Zwróć uwagę na kolejność wykonywania dodatkowych selectów
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
em
.
createNamedQuery
(
"Location.findAll"
,
Location
.
class
)
.
getResultStream
()
.
map
(
loc
->
String
.
format
(
" - %s, %s %s, %s"
,
loc
.
getStreetAddress
(),
loc
.
getPostalCode
(),
loc
.
getCity
(),
loc
.
getCountry
().
getCountryName
()))
.
forEach
(
System
.
out
::
println
);
}
finally
{
em
.
close
();
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/P05_Warunek.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.util.List
;
import
javax.swing.JOptionPane
;
import
hr.model.Employee
;
import
jakarta.persistence.*
;
public
class
P05_Warunek
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
String
szukaneMiasto
=
JOptionPane
.
showInputDialog
(
"Podaj miasto"
,
"Seattle"
);
TypedQuery
<
Employee
>
query
=
em
.
createQuery
(
"SELECT emp FROM Employee emp WHERE emp.department.location.city = :miasto"
,
Employee
.
class
);
query
.
setParameter
(
"miasto"
,
szukaneMiasto
);
List
<
Employee
>
emps
=
query
.
getResultList
();
System
.
out
.
println
(
"Ilość rekordów "
+
emps
.
size
());
for
(
Employee
emp
:
emps
)
{
System
.
out
.
println
(
emp
.
getFirstName
()
+
" "
+
emp
.
getLastName
());
}
}
finally
{
em
.
close
();
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/P06_AktualizujRekord1.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
java.math.BigDecimal
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
hr.model.Employee
;
public
class
P06_AktualizujRekord1
{
public
static
void
main
(
String
[]
args
)
{
int
id
=
100
;
int
zmiana
=
200
;
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
em
.
getTransaction
().
begin
();
Employee
emp
=
em
.
find
(
Employee
.
class
,
id
);
if
(
emp
==
null
)
{
System
.
out
.
println
(
"nie ma"
);
return
;
}
System
.
out
.
println
(
"Pensja przed zmianą: "
+
emp
.
getSalary
());
emp
.
setSalary
(
emp
.
getSalary
().
add
(
BigDecimal
.
valueOf
(
zmiana
)));
System
.
out
.
println
(
"Pensja po zmianie: "
+
emp
.
getSalary
());
// flush wykonuje operacje po stronie bazy danych, ale ich nie komituje
//em.flush();
// jeśli robimy commit, to nie potrzebujemy flush
em
.
getTransaction
().
commit
();
System
.
out
.
println
(
"Zapisane"
);
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/P07_AktualizujRekord2.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
hr.model.Department
;
import
hr.model.Employee
;
public
class
P07_AktualizujRekord2
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
em
.
getTransaction
().
begin
();
Employee
king
=
em
.
find
(
Employee
.
class
,
100
);
System
.
out
.
println
(
king
.
getEmployeeId
()
+
" "
+
king
.
getFirstName
()
+
" "
+
king
.
getLastName
());
Employee
kochhar
=
em
.
find
(
Employee
.
class
,
101
);
System
.
out
.
println
(
kochhar
.
getEmployeeId
()
+
" "
+
kochhar
.
getFirstName
()
+
" "
+
kochhar
.
getLastName
());
Department
dep
=
em
.
find
(
Department
.
class
,
90
);
System
.
out
.
println
(
"departament: "
+
dep
.
getDepartmentName
());
System
.
out
.
println
(
dep
==
king
.
getDepartment
());
System
.
out
.
println
(
dep
==
kochhar
.
getDepartment
());
System
.
out
.
println
();
System
.
out
.
println
(
"Departamenty przed zmianą: "
+
dep
.
getDepartmentName
()
+
" "
+
king
.
getDepartment
().
getDepartmentName
()
+
" "
+
kochhar
.
getDepartment
().
getDepartmentName
());
king
.
getDepartment
().
setDepartmentName
(
"Nowa nazwa"
);
// king.getDepartment().setDepartmentName("Executive");
System
.
out
.
println
(
"Departamenty po zmianie: "
+
dep
.
getDepartmentName
()
+
" "
+
king
.
getDepartment
().
getDepartmentName
()
+
" "
+
kochhar
.
getDepartment
().
getDepartmentName
());
System
.
out
.
println
(
dep
==
king
.
getDepartment
());
System
.
out
.
println
(
dep
==
kochhar
.
getDepartment
());
em
.
getTransaction
().
commit
();
System
.
out
.
println
(
"Zapisane"
);
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/hr/programy/P08_DodajNoweRekordy.java
0 → 100644
View file @
b847cd75
package
hr
.
programy
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
hr.model.Country
;
import
hr.model.Location
;
import
hr.model.Region
;
public
class
P08_DodajNoweRekordy
{
public
static
void
main
(
String
[]
args
)
{
EntityManagerFactory
emf
=
null
;
EntityManager
em
=
null
;
try
{
emf
=
Persistence
.
createEntityManagerFactory
(
"hr_postgresql"
);
em
=
emf
.
createEntityManager
();
em
.
getTransaction
().
begin
();
// Utworzyć nowy kraj (my podajemy id) i nową lokalizację (id zostanie wygenerowane).
Region
region
=
em
.
find
(
Region
.
class
,
1
);
Country
polska
=
new
Country
();
polska
.
setCountryId
(
"PL"
);
polska
.
setCountryName
(
"Polska"
);
polska
.
setRegion
(
region
);
System
.
out
.
println
(
"Zaraz wykonam country.persist..."
);
em
.
persist
(
polska
);
System
.
out
.
println
(
"Wykonane"
);
// Dla lokalizacji nie podajemy ID - ono zostanie wygenerowane z sekwencji.
Location
loc
=
new
Location
();
loc
.
setCountry
(
polska
);
loc
.
setStreetAddress
(
"Jasna"
);
loc
.
setCity
(
"Warszawa"
);
loc
.
setPostalCode
(
"00-123"
);
System
.
out
.
println
(
"id przed dodaniem "
+
loc
.
getLocationId
());
em
.
persist
(
loc
);
System
.
out
.
println
(
"id po dodaniu "
+
loc
.
getLocationId
());
em
.
getTransaction
().
commit
();
System
.
out
.
println
(
"Zapisano."
);
}
finally
{
if
(
em
!=
null
)
em
.
close
();
if
(
emf
!=
null
)
emf
.
close
();
}
}
}
PC30-Hibernate/src/main/java/sklep/programy/OdczytajListe_Stream.java
0 → 100644
View file @
b847cd75
package
sklep
.
przyklady_hibernate
;
import
jakarta.persistence.EntityManager
;
import
jakarta.persistence.EntityManagerFactory
;
import
jakarta.persistence.Persistence
;
import
jakarta.persistence.TypedQuery
;
import
sklep.model.Product
;
public
class
OdczytajListe_Stream
{
public
static
void
main
(
String
[]
args
)
{
try
(
EntityManagerFactory
emf
=
Persistence
.
createEntityManagerFactory
(
"sklep"
);
EntityManager
em
=
emf
.
createEntityManager
())
{
TypedQuery
<
Product
>
query
=
em
.
createNamedQuery
(
"Product.findAll"
,
Product
.
class
);
query
.
getResultStream
()
.
forEachOrdered
(
product
->
System
.
out
.
printf
(
"%s za cenę %s\n"
,
product
.
getProductName
(),
product
.
getPrice
()));
}
}
}
PC30-Hibernate/src/main/resources/META-INF/persistence.xml
View file @
b847cd75
...
@@ -16,4 +16,19 @@
...
@@ -16,4 +16,19 @@
<property
name=
"hibernate.show_sql"
value=
"true"
/>
<property
name=
"hibernate.show_sql"
value=
"true"
/>
</properties>
</properties>
</persistence-unit>
</persistence-unit>
<persistence-unit
name=
"hr_postgresql"
transaction-type=
"RESOURCE_LOCAL"
>
<class>
hr.model.Country
</class>
<class>
hr.model.Department
</class>
<class>
hr.model.Employee
</class>
<class>
hr.model.Job
</class>
<class>
hr.model.Location
</class>
<class>
hr.model.Region
</class>
<properties>
<property
name=
"javax.persistence.jdbc.url"
value=
"jdbc:postgresql://localhost:5432/hr"
/>
<property
name=
"javax.persistence.jdbc.user"
value=
"alx"
/>
<property
name=
"javax.persistence.jdbc.password"
value=
"abc123"
/>
<property
name=
"javax.persistence.jdbc.driver"
value=
"org.postgresql.Driver"
/>
<property
name=
"hibernate.show_sql"
value=
"true"
/>
</properties>
</persistence-unit>
</persistence>
</persistence>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment