A hands-on learning repository documenting my journey through Java backend development. This repository contains small practice projects and experiments covering core Java backend technologies, persistence, web development, and the Spring ecosystem.
The projects are organized as individual learning modules:
- JDBC
- Servlets
- Hibernate
- Spring Core
- Spring Java Configuration
- Spring XML Configuration
- Spring JDBC
- Spring Data JPA
- Spring MVC
- Spring Boot
| Project | Topics |
|---|---|
jdbc-practice |
JDBC, database connections, SQL, CRUD |
servlet-practice |
Servlets, HTTP, Tomcat, request/response |
hibernate-practice |
Hibernate ORM, entities, sessions, persistence |
spring-java-configuration |
Spring IoC and Java-based configuration |
spring-xml-configuration |
Spring IoC and XML-based configuration |
spring-jdbc |
Spring JDBC and database access |
spring-data-jpa-demo |
Spring Data JPA and repository abstraction |
spring-boot-mvc-demo |
Spring Boot, MVC, controllers, web applications |
The JDBC practice project focuses on database connectivity and core JDBC operations using PostgreSQL.
- JDBC database connectivity with
DriverManager Connection,Statement, andResultSetexecuteQuery()andexecuteUpdate()- CRUD operations:
INSERT,SELECT,UPDATE,DELETE PreparedStatementand parameterized SQL- Batch processing with
addBatch()andexecuteBatch() - Transaction management with
commit()androllback() DatabaseMetaDataandResultSetMetaData- Try-with-resources for JDBC resource management
- Maven dependency management for the PostgreSQL JDBC driver
jdbc-practice/
├── pom.xml
└── src/
└── main/
└── java/
├── Main.java
├── ConnectionDemo.java
├── StatementDemo.java
├── CrudDemo.java
├── PreparedStatementDemo.java
├── BatchDemo.java
├── TransactionDemo.java
└── MetadataDemo.java
- Embedded Tomcat
- Servlet registration and URL mapping
- Context path vs servlet path
- HTTP request and response
HttpServletRequestHttpServletResponsedoGet(),doPost(),doPut(),doDelete()- Servlet lifecycle:
init()anddestroy()
The Servlet practice project uses embedded Tomcat and maps:
http://localhost:8080/greetings/hello
The Hibernate practice project covers ORM fundamentals, JPA entity mapping, persistence, HQL, entity lifecycle, persistence context, transactions, relationships, and fetch strategies using PostgreSQL.
- Maven project setup
- Hibernate ORM dependency configuration
- PostgreSQL JDBC driver
hibernate.cfg.xml- Database connection and dialect configuration
SessionFactorycreationSessionmanagementSessionFactorylifecycle and resource management
@Entity@Id@GeneratedValue@Column@Table- Entity-to-table mapping
- Field-to-column mapping
- Generated primary keys
SessionFactorySessionTransactionbeginTransaction()commit()rollback()- Transaction boundaries
- Basic transaction failure handling
- Transient state
- Persistent state
- Detached state
persist()detach()- Entity state transitions
- Dirty checking of persistent entities
persist()for inserting entitiesfind()for retrieving entitiesgetReference()for obtaining entity references- Updating persistent entities
- Automatic updates through dirty checking
remove()for deleting entities
- HQL
SELECT WHEREconditions- Parameterized HQL queries
LIKEORDER BY- Aggregate functions
COUNT()AVG()- HQL
JOIN JOIN FETCH
createQuery()- Typed HQL queries
setParameter()getResultList()getSingleResult()
- Persistence context
- First-level cache
- Entity identity within a persistence context
- Dirty checking
flush()refresh()clear()detach()- Synchronization between entities and the database
- Entity relationships and foreign keys
@OneToMany@ManyToOnemappedBy- Relationship ownership
- Cascade operations
- Bidirectional relationships
- Collection mapping
- Foreign-key based associations
FetchType.LAZYFetchType.EAGER- Lazy loading
- Explicit initialization of lazy associations
JOIN FETCH- Difference between lazy and eager loading
- Hibernate exception handling
- Transaction failure handling
- Rollback on operation failure
- Handling invalid entity operations
- Resource cleanup with try-with-resources
hibernate-practice/
├── pom.xml
├── src/
│ └── main/
│ ├── java/
│ │ ├── ConfigurationDemo.java
│ │ ├── CrudDemo.java
│ │ ├── EntityLifecycleDemo.java
│ │ ├── ExceptionDemo.java
│ │ ├── FetchTypeDemo.java
│ │ ├── HibernateUtil.java
│ │ ├── HqlDemo.java
│ │ ├── Laptop.java
│ │ ├── Main.java
│ │ ├── PersistenceContextDemo.java
│ │ ├── RelationshipDemo.java
│ │ ├── Student.java
│ │ └── TransactionDemo.java
│ └── resources/
│ └── hibernate.cfg.xml