
Quick Contact
Java Tutorial
- What is Java?
- History of Java
- Hello Java Program
- Features of Java
- Basic Syntax
- Java Setup
- Data Types in Java
- Java Variables
- Operators in Java
- JVM
- Java If-else Statement
- Switch Case Statement
- Java Loops
- Do-While Loop
- Java While Loop
- Continue Statement
- Break Statement in Java
- Constructors in Java
- Oops Concept in Java
- Features of OOPs
- Inheritance
- Exeception handeling
- Aggregation (HAS-A relationship) in Java
- Method Overriding in Java
- Method Overloading
- Java Static Keyword
- Java This Keyword
- Java Final Keyword
- Polymorphism
- Static Binding and Dynamic Binding
- Abstract class in Java
- Access Modifiers in Java
- Difference between abstract class and interface
- Interface in Java
- Garbage Collection in Java
- Java Package
- Encapsulation
- Serialization and Deserialization in Java
- Java Inner Classes
- Java Applets
- Multithreading in Java
- Thread Priorities in Java
- Thread Creation
- Inter Thread Communication
- Wrapper Classes in Java
- Java Input Output
- Java AWT Introduction
- Java Layout Manager
- Java Layout Policy
- Java AWT Events
- Collection Framework
- Collection Framework List Interface
- Swing in Java
- Swing Utility Classes
- Swing Layout Managers
- Java JDBC
- Hibernate Framework Overview – Architecture and Basics
Springboot
- Spring Environment Setup
- Spring Boot CRUD REST API Project using IntelliJ IDEA | Postman | MySQL
- Dockerizing Spring Boot Application | Spring Boot Docker Tutorial
- spring-boot-restapidocumentation with swagger
- Spring Boot HttpClient Overview
- Apache HttpClient POST HTTP Request Example
- Apache HttpClient PUT HTTP Request Example
- Apache HttpClient DELETE HTTP Request Example
- Apache HttpClient HTML Form POST Request Example
- Spring Boot JSP Exampl
- Deploying Spring Boot WAR file with JSP to Tomcat
- Spring Boot Annotations
- Spring Core Annotations
- Spring MVC Annotations with Examples
- Spring Scheduling Annotations
- Spring - Java-based Container Configuration
- Spring Java Based Configuration Example
Hibernate
- Hibernate 5 hello world
- Hibernate- One to One Unidirectional Mapping Annotation Example
- Hibernate - Batch Processing
- Hibernate - Interceptors
- Hibernate 5 - Create, Read, Update and Delete (CRUD) Operations Example
- Hibernate Transaction Management
- Hibernate One to Many Unidirectional Mapping Example
- Hibernate One to Many Bidirectional Mapping Example
- Hibernate Many to Many Annotation Mapping Example
- Hibernate Primary KeyJoin Column
- Hibernate First Level Cache with Example
- Hibernate XML Configuration Example with Maven + Eclipse + MySQL Database
- Hibernate Java Configuration Example
- JPA 2 with Hibernate 5 Bootstrapping Example
- JPA and Hibernate Cascade Types
- Hibernate/JPA - Primary Key Generation
- Hibernate 5 - Enum Type Mapping Example
- Hibernate Component Mapping
- Hibernate Object States – Transient,Persistent and Detached
- Hibernate 5 - Save an Entity Example
- Hibernate 5 - Persist an Entity Example
- Hibernate 5 - saveOrUpdate() Method Example
- Hibernate 5 - get(), load() and byId() Method Examples
- Hibernate 5 - merge() Example
- Hibernate 5 - Delete or Remove an Entity Example
- Hibernate 5 - load() Method Example
- Hibernate Session Interface Methods
- Hibernate Session.clear() Method Example
- Introduction Of Java strutes to Architecture
- Struts 2 - Architecture
- Struts 2 - Configuration Files
- Struts 2 - Actions
- Struts 2 - Interceptors
- Struts 2 - Results & Result Types
- Struts 2 - Value Stack/OGNL
- Struts 2 - File Uploading
- Struts 2 - Database Access
- Struts 2 - Validations Framework
JAVA FX
- JavaFX Tutorial
- Introduction to JavaFX Pane
- JavaFX Popup
- JavaFX group
- JavaFX Controller
- JavaFX Gradient Color
- JavaFXAnchorPane
- JavaFXTabPane
- JavaFX Scene
- JavaFX Stage
- JavaFXWebView
- JavaFX Timeline
- JavaFX Timer
- JavaFX Image
- JavaFX Background
- JavaFX dialog
- JavaFX Font
- JavaFXTextArea
- JavaFXObservableList
- JavaFX GUI
- JavaFX FXML
- JavaFXEventHandler
- JavaFXGradle
- JavafxScrollpane
- JavaFXAPI
Hibernate Component Mapping
Here we see how to embed one entity inside another entity, so they are mapped to a single table. With Hibernate we can use the @Embeddable annotation to mark a class to be eligible as an embeddable class. We can use the @Embedded annotation to embed an embeddable class. The attributes of an embedded class can be overridden using the @AttributeOverrides and the @AttributeOverride annotations. Let’s see how this works, by following a complete example.
Add jar Dependencies to pom.xml
We use Apache Maven to manage the project’s dependencies. Add the following dependencies to your projects pom.xml file.
< project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> < modelVersion>4.0.0< /modelVersion> < parent> < groupId>net.ducatindia.hibernate< /groupId> < artifactId>hibernate-tutorial< /artifactId> < version>0.0.1-SNAPSHOT< /version> < /parent> < artifactId>hibernate-Embaddable-example< /artifactId> < properties> < project.build.sourceEncoding>UTF-8< /project.build.sourceEncoding> < /properties> < dependencies> < !-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> < dependency> < groupId>mysql< /groupId> < artifactId>mysql-connector-java< /artifactId> < version>8.0.13< /version> < /dependency> < !-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> < dependency> < groupId>org.hibernate< /groupId> < artifactId>hibernate-core< /artifactId> < version>5.3.7.Final< /version> < /dependency> < /dependencies> < build> < sourceDirectory>src/main/java< /sourceDirectory> < plugins> < plugin> < artifactId>maven-compiler-plugin< /artifactId> < version>3.5.1< /version> < configuration> < source>1.8< /source> < target>1.8< /target> < /configuration> < /plugin> < /plugins> < /build> < /project>
Creating an Embeddable Class using @Embeddable
Let’s create Address and Name classes as Embeddable Class. The advantage of using embedded objects is that they are reusable and you can map two entities to the same database table.
packagenet.ducatindia.hibernate.entity; importjavax.persistence.Embeddable; @Embeddable publicclassAddress { privateString addressLine1; privateString addressLine2; privateString city; privateString state; privateString country; privateStringzipCode; publicAddress() { } publicAddress(StringaddressLine1, StringaddressLine2, Stringcity, Stringstate, Stringcountry, StringzipCode) { this.addressLine1 = addressLine1; this.addressLine2 = addressLine2; this.city= city; this.state= state; this.country= country; this.zipCode=zipCode; } publicStringgetAddressLine1() { return addressLine1; } publicvoidsetAddressLine1(StringaddressLine1) { this.addressLine1 = addressLine1; } publicStringgetAddressLine2() { return addressLine2; } publicvoidsetAddressLine2(StringaddressLine2) { this.addressLine2 = addressLine2; } publicStringgetCity() { return city; } publicvoidsetCity(Stringcity) { this.city= city; } publicStringgetState() { return state; } publicvoidsetState(Stringstate) { this.state= state; } publicStringgetCountry() { return country; } publicvoidsetCountry(Stringcountry) { this.country= country; } publicStringgetZipCode() { returnzipCode; } publicvoidsetZipCode(StringzipCode) { this.zipCode=zipCode; } }
Name.java
packagenet.ducatindia.hibernate.entity; importjavax.persistence.Embeddable; @Embeddable publicclassName { privateStringfirstName; privateStringmiddleName; privateStringlastName; publicName() { } publicName(StringfirstName, StringmiddleName, StringlastName) { this.firstName=firstName; this.middleName=middleName; this.lastName=lastName; } publicStringgetFirstName() { returnfirstName; } publicvoidsetFirstName(StringfirstName) { this.firstName=firstName; } publicStringgetMiddleName() { returnmiddleName; } publicvoidsetMiddleName(StringmiddleName) { this.middleName=middleName; } publicStringgetLastName() { returnlastName; } publicvoidsetLastName(StringlastName) { this.lastName=lastName; } }
Embedding an Embeddable object with @Embedded
We can simply embed an embeddable class using the @Embedded annotation. This class will be embedded in the same database table as the source. We can optionally override the attributes of the embedded class using the @AttributeOverrides and @AttributeOverride annotation. Let’s create User class and embed Address and Name classes into it using the @Embedded annotation:
packagenet.ducatindia.hibernate.entity; importjavax.persistence.*; /** * Created by ramesh */ @Entity @Table(name="users") publicclassUser { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) privateLong id; @Embedded privateNamename; privateString email; @Embedded @AttributeOverrides(value= { @AttributeOverride(name="addressLine1", column=@Column(name="house_number")), @AttributeOverride(name="addressLine2", column=@Column(name="street")) }) privateAddressaddress; publicUser() { } publicUser(Namename, Stringemail, Addressaddress) { this.name = name; this.email= email; this.address= address; } publicLonggetId() { return id; } publicvoidsetId(Longid) { this.id = id; } publicNamegetName() { return name; } publicvoidsetName(Namename) { this.name = name; } publicStringgetEmail() { return email; } publicvoidsetEmail(Stringemail) { this.email= email; } publicAddressgetAddress() { return address; } publicvoidsetAddress(Addressaddress) { this.address= address; } }
Create a Hibernate configuration file – Java Configuration
The HibernateUtil Java configuration file contains information about the database and mapping file.
Let’s create a HibernateUtil file and write the following code in it.
packagenet.ducatindia.hibernate.util; importjava.util.Properties; importorg.hibernate.SessionFactory; importorg.hibernate.boot.registry.StandardServiceRegistryBuilder; importorg.hibernate.cfg.Configuration; importorg.hibernate.cfg.Environment; importorg.hibernate.service.ServiceRegistry; importnet.ducatindia.hibernate.entity.Student; publicclassHibernateUtil { privatestaticSessionFactorysessionFactory; publicstaticSessionFactorygetSessionFactory() { if (sessionFactory==null) { try { Configurationconfiguration=newConfiguration(); // Hibernate settings equivalent to hibernate.cfg.xml's properties Properties settings =newProperties(); settings.put(Environment.DRIVER, "com.mysql.cj.jdbc.Driver"); settings.put(Environment.URL, "jdbc:mysql://localhost:3306/hibernate_db?useSSL=false"); settings.put(Environment.USER, "root"); settings.put(Environment.PASS, "root"); settings.put(Environment.DIALECT, "org.hibernate.dialect.MySQL5Dialect"); settings.put(Environment.SHOW_SQL, "true"); settings.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread"); settings.put(Environment.HBM2DDL_AUTO, "create-drop"); configuration.setProperties(settings); configuration.addAnnotatedClass(Student.class); ServiceRegistryserviceRegistry=newStandardServiceRegistryBuilder() .applySettings(configuration.getProperties()).build(); sessionFactory=configuration.buildSessionFactory(serviceRegistry); } catch (Exception e) { e.printStackTrace(); } } returnsessionFactory; } }
Running and Testing Embeddable Objects
When we execute the following application, a record will be added to the database.
packagenet.ducatindia.hibernate; importorg.hibernate.Session; importorg.hibernate.Transaction; importnet.ducatindia.hibernate.entity.Address; importnet.ducatindia.hibernate.entity.Name; importnet.ducatindia.hibernate.entity.User; importnet.ducatindia.hibernate.util.HibernateUtil; publicclassApp { publicstaticvoidmain(String[] args) { Namename=newName("Rajan", "M", "sharma"); Addressaddress=newAddress("123", "Civil lines", "Allahabad", "UP", "India", "211001"); Useruser=newUser(name, "Rajan@gmail.com", address); Transactiontransaction=null; try (Sessionsession=HibernateUtil.getSessionFactory().openSession()) { // start a transaction transaction=session.beginTransaction(); // save the student object session.save(user); // commit transaction transaction.commit(); } catch (Exception e) { if (transaction !=null) { transaction.rollback(); } e.printStackTrace(); } } }
Apply now for Advanced Java Training Course