Skip to content

Commit d76b9d6

Browse files
committed
more changes
1 parent f6cf722 commit d76b9d6

File tree

6 files changed

+159
-3
lines changed

6 files changed

+159
-3
lines changed

hibernate/ifinances/src/main/java/com/rakeshv/ifinances/models/Account.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
import javax.persistence.ManyToMany;
1717
import javax.persistence.ManyToOne;
1818
import javax.persistence.OneToMany;
19+
import javax.persistence.SequenceGenerator;
1920
import javax.persistence.Table;
21+
import javax.persistence.TableGenerator;
2022
import java.math.BigDecimal;
2123
import java.util.ArrayList;
2224
import java.util.Date;
@@ -32,7 +34,11 @@
3234
@Table(name = "account")
3335
public class Account {
3436
@Id
35-
@GeneratedValue(strategy = GenerationType.AUTO)
37+
// AUTO is the default generation strategy
38+
// @GeneratedValue(strategy = GenerationType.AUTO)
39+
@GeneratedValue(strategy = GenerationType.TABLE, generator = "account_table_generator")
40+
@TableGenerator(name = "account_table_generator", table = "ifinances_keys",
41+
pkColumnName = "PK_NAME", valueColumnName = "PK_VALUE")
3642
@Column(name = "ACCOUNT_ID")
3743
private Long accountId;
3844

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.rakeshv.ifinances.models;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
import javax.persistence.Column;
9+
import javax.persistence.Entity;
10+
import javax.persistence.GeneratedValue;
11+
import javax.persistence.Id;
12+
import javax.persistence.Table;
13+
import javax.persistence.Temporal;
14+
import javax.persistence.TemporalType;
15+
import java.sql.Time;
16+
import java.sql.Timestamp;
17+
import java.util.Date;
18+
19+
@Data
20+
@AllArgsConstructor
21+
@NoArgsConstructor
22+
@Builder
23+
@Entity
24+
@Table(name = "time_test")
25+
public class TimeTest {
26+
@Id
27+
@GeneratedValue
28+
@Column(name = "TIME_TEST_ID")
29+
private long timeTestId;
30+
31+
@Temporal(TemporalType.TIMESTAMP)
32+
@Column(name = "DATETIME_COLUMN")
33+
private Date datetimeColumn;
34+
35+
@Temporal(TemporalType.TIMESTAMP)
36+
@Column(name = "TIMESTAMP_COLUMN")
37+
private Date timestampColumn;
38+
39+
@Temporal(TemporalType.DATE)
40+
@Column(name = "DATE_COLUMN")
41+
private Date dateColumn;
42+
43+
@Temporal(TemporalType.TIME)
44+
@Column(name = "TIME_COLUMN")
45+
private Date timeColumn;
46+
47+
@Column(name = "SQL_DATETIME_COLUMN")
48+
private Timestamp sqlDateTimeColumn;
49+
50+
@Column(name = "SQL_TIMESTAMP_COLUMN")
51+
private Timestamp sqlTimestampColumn;
52+
53+
@Column(name = "SQL_DATE_COLUMN")
54+
private java.sql.Date sqlDateColumn;
55+
56+
@Column(name = "SQL_TIME_COLUMN")
57+
private Time sqlTimeColumn;
58+
}

hibernate/ifinances/src/main/java/com/rakeshv/ifinances/models/User.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,28 @@
44
import lombok.Builder;
55
import lombok.Data;
66
import lombok.NoArgsConstructor;
7+
import org.hibernate.annotations.Formula;
78

89
import javax.persistence.Column;
910
import javax.persistence.Entity;
1011
import javax.persistence.GeneratedValue;
1112
import javax.persistence.GenerationType;
1213
import javax.persistence.Id;
14+
import javax.persistence.SequenceGenerator;
1315
import javax.persistence.Table;
16+
import javax.persistence.Transient;
1417
import java.util.Date;
1518

1619
@Data
1720
@AllArgsConstructor
1821
@NoArgsConstructor
1922
@Builder
2023
@Entity
21-
@Table(name = "FINANCES_USER")
24+
@Table(name = "finances_user")
2225
public class User {
2326
@Id
24-
@GeneratedValue(strategy= GenerationType.IDENTITY)
27+
@GeneratedValue(strategy= GenerationType.SEQUENCE, generator = "seqGen")
28+
@SequenceGenerator(name = "seqGen", sequenceName = "seq", initialValue = 100)
2529
@Column(name="USER_ID")
2630
private Long userId;
2731

@@ -49,4 +53,10 @@ public class User {
4953
@Column(name="CREATED_BY", updatable=false)
5054
private String createdBy;
5155

56+
@Transient
57+
private boolean valid;
58+
59+
// @Formula("YEAR(CURDATE()) - YEAR(BIRTH_DATE)")
60+
@Formula("lower(datediff(curdate(),BIRTH_DATE)/365)")
61+
private int age;
5262
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.rakeshv.ifinances.repositories;
2+
3+
import com.rakeshv.ifinances.models.TimeTest;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public interface TimeTestRepository extends JpaRepository<TimeTest, Long> {
9+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.rakeshv.ifinances.utils;
2+
3+
import com.rakeshv.ifinances.models.TimeTest;
4+
import com.rakeshv.ifinances.models.User;
5+
import com.rakeshv.ifinances.repositories.TimeTestRepository;
6+
import com.rakeshv.ifinances.repositories.UserRepository;
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.boot.CommandLineRunner;
9+
import org.springframework.stereotype.Component;
10+
11+
import java.sql.Time;
12+
import java.sql.Timestamp;
13+
import java.util.Calendar;
14+
import java.util.Date;
15+
import java.util.List;
16+
17+
@Component
18+
public class DbLoader implements CommandLineRunner {
19+
20+
@Autowired
21+
TimeTestRepository timeTestRepository;
22+
@Autowired
23+
UserRepository userRepository;
24+
25+
@Override
26+
public void run(String... args) throws Exception {
27+
TimeTest timeTest = TimeTest.builder()
28+
.dateColumn(new Date())
29+
.timeColumn(new Date())
30+
.timestampColumn(new Date())
31+
.datetimeColumn(new Date())
32+
.sqlDateColumn(new java.sql.Date(new Date().getTime()))
33+
.sqlTimeColumn(new Time(new Date().getTime()))
34+
.sqlDateTimeColumn(new Timestamp(new Date().getTime()))
35+
.sqlTimestampColumn(new Timestamp(new Date().getTime())).build();
36+
// timeTestRepository.save(timeTest);
37+
38+
User user = User.builder()
39+
.createdBy("Kevin")
40+
.birthDate(getBirthday())
41+
.createdDate(new Date())
42+
.emailAddress("kmb385@yahoo.com")
43+
.firstName("Kevin")
44+
.lastName("Bowersox")
45+
.lastUpdatedBy("kevin")
46+
.lastUpdatedDate(new Date()).build();
47+
// userRepository.save(user);
48+
49+
List<User> users = userRepository.findAll();
50+
51+
users.forEach(u -> System.out.println(u.toString()));
52+
}
53+
54+
private static Date getBirthday() {
55+
Calendar calendar = Calendar.getInstance();
56+
calendar.set(Calendar.YEAR, 1987);
57+
calendar.set(Calendar.MONTH, 6);
58+
calendar.set(Calendar.DATE, 19);
59+
60+
return calendar.getTime();
61+
}
62+
}

hibernate/notes.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,3 +306,14 @@ Locking
306306
Optimistic locking and pessimistic
307307

308308
@Lock(LockModeType.PESSIMISTIC_WRITE)
309+
310+
311+
Database provides 3 types of date or time datatypes
312+
313+
datetime, date, time
314+
315+
mysql has timestamp which is different from time
316+
317+
3 value types
318+
319+
basic, composite and collection

0 commit comments

Comments
 (0)