[BAEL-7421] - Creating Postgres Schema with Liquibase
This commit is contained in:
		
							parent
							
								
									4f0a8ce5d9
								
							
						
					
					
						commit
						028a0dbe9f
					
				| @ -4,13 +4,9 @@ | |||||||
|     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |     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> |     <modelVersion>4.0.0</modelVersion> | ||||||
|     <artifactId>liquibase</artifactId> |     <artifactId>liquibase</artifactId> | ||||||
|  |     <groupId>com.baeldung</groupId> | ||||||
|     <name>liquibase</name> |     <name>liquibase</name> | ||||||
| 
 |     <version>0.0.1-SNAPSHOT</version> | ||||||
|     <parent> |  | ||||||
|         <groupId>com.baeldung</groupId> |  | ||||||
|         <artifactId>persistence-modules</artifactId> |  | ||||||
|         <version>1.0.0-SNAPSHOT</version> |  | ||||||
|     </parent> |  | ||||||
| 
 | 
 | ||||||
|     <dependencies> |     <dependencies> | ||||||
|         <dependency> |         <dependency> | ||||||
| @ -18,6 +14,38 @@ | |||||||
|             <artifactId>mysql-connector-j</artifactId> |             <artifactId>mysql-connector-j</artifactId> | ||||||
|             <version>${mysql-connector-java.version}</version> |             <version>${mysql-connector-java.version}</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework.boot</groupId> | ||||||
|  |             <artifactId>spring-boot-starter-web</artifactId> | ||||||
|  |             <version>3.2.3</version> | ||||||
|  |             <exclusions> | ||||||
|  |                 <exclusion> | ||||||
|  |                     <groupId>org.slf4j</groupId> | ||||||
|  |                     <artifactId>slf4j-log4j12</artifactId> | ||||||
|  |                 </exclusion> | ||||||
|  |             </exclusions> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.springframework.boot</groupId> | ||||||
|  |             <artifactId>spring-boot-starter-data-jpa</artifactId> | ||||||
|  |             <version>3.2.3</version> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.liquibase</groupId> | ||||||
|  |             <artifactId>liquibase-core</artifactId> | ||||||
|  |             <version>4.24.0</version> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.postgresql</groupId> | ||||||
|  |             <artifactId>postgresql</artifactId> | ||||||
|  |             <version>42.6.1</version> | ||||||
|  |             <scope>runtime</scope> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>net.lbruun.springboot</groupId> | ||||||
|  |             <artifactId>preliquibase-spring-boot-starter</artifactId> | ||||||
|  |             <version>1.5.0</version> | ||||||
|  |         </dependency> | ||||||
|     </dependencies> |     </dependencies> | ||||||
| 
 | 
 | ||||||
|     <build> |     <build> | ||||||
| @ -32,12 +60,26 @@ | |||||||
|                     <changeLogFile>liquibase/db-changelog.xml</changeLogFile> |                     <changeLogFile>liquibase/db-changelog.xml</changeLogFile> | ||||||
|                 </configuration> |                 </configuration> | ||||||
|             </plugin> |             </plugin> | ||||||
|  |             <plugin> | ||||||
|  |                 <groupId>org.apache.maven.plugins</groupId> | ||||||
|  |                 <artifactId>maven-compiler-plugin</artifactId> | ||||||
|  |                 <configuration> | ||||||
|  |                     <release>${maven.compiler.release}</release> | ||||||
|  |                     <compilerArgs>--enable-preview</compilerArgs> | ||||||
|  |                     <source>${maven.compiler.source.version}</source> | ||||||
|  |                     <target>${maven.compiler.target.version}</target> | ||||||
|  |                 </configuration> | ||||||
|  |             </plugin> | ||||||
|         </plugins> |         </plugins> | ||||||
|     </build> |     </build> | ||||||
| 
 | 
 | ||||||
|     <properties> |     <properties> | ||||||
|         <mysql-connector-java.version>8.2.0</mysql-connector-java.version> |         <mysql-connector-java.version>8.2.0</mysql-connector-java.version> | ||||||
|         <liquibase-maven-plugin.version>4.25.0</liquibase-maven-plugin.version> |         <liquibase-maven-plugin.version>4.25.0</liquibase-maven-plugin.version> | ||||||
|  |         <maven.compiler.source.version>17</maven.compiler.source.version> | ||||||
|  |         <maven.compiler.target.version>17</maven.compiler.target.version> | ||||||
|  |         <maven.compiler.release>17</maven.compiler.release> | ||||||
|  |         <java.version>17</java.version> | ||||||
|     </properties> |     </properties> | ||||||
| 
 | 
 | ||||||
| </project> | </project> | ||||||
| @ -0,0 +1,12 @@ | |||||||
|  | package com.baeldung.liquibase; | ||||||
|  | 
 | ||||||
|  | import org.springframework.boot.SpringApplication; | ||||||
|  | import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||||
|  | 
 | ||||||
|  | @SpringBootApplication | ||||||
|  | public class LiquibaseCreateSchemaApplication { | ||||||
|  | 
 | ||||||
|  |     public static void main(String[] args) { | ||||||
|  |         SpringApplication.run(LiquibaseCreateSchemaApplication.class, args); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,31 @@ | |||||||
|  | package com.baeldung.liquibase.configuration; | ||||||
|  | 
 | ||||||
|  | import org.springframework.beans.BeansException; | ||||||
|  | import org.springframework.beans.factory.annotation.Value; | ||||||
|  | import org.springframework.beans.factory.config.BeanPostProcessor; | ||||||
|  | 
 | ||||||
|  | import javax.sql.DataSource; | ||||||
|  | import java.sql.Connection; | ||||||
|  | import java.sql.SQLException; | ||||||
|  | import java.sql.Statement; | ||||||
|  | 
 | ||||||
|  | public class SchemaInitializer implements BeanPostProcessor { | ||||||
|  | 
 | ||||||
|  |     @Value("${spring.liquibase.default-schema}") | ||||||
|  |     private String schemaName; | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { | ||||||
|  |         if (bean instanceof DataSource) { | ||||||
|  |             DataSource dataSource = (DataSource) bean; | ||||||
|  |             try { | ||||||
|  |                 Connection conn = dataSource.getConnection(); | ||||||
|  |                 Statement statement = conn.createStatement(); | ||||||
|  |                 statement.execute(String.format("CREATE SCHEMA IF NOT EXISTS %s", schemaName)); | ||||||
|  |             } catch (SQLException e) { | ||||||
|  |                 throw new RuntimeException(e); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return bean; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,30 @@ | |||||||
|  | package com.baeldung.liquibase.entity; | ||||||
|  | 
 | ||||||
|  | import jakarta.persistence.Entity; | ||||||
|  | import jakarta.persistence.Id; | ||||||
|  | import jakarta.persistence.Table; | ||||||
|  | 
 | ||||||
|  | @Entity | ||||||
|  | @Table(name = "users") | ||||||
|  | public class User { | ||||||
|  | 
 | ||||||
|  |     @Id | ||||||
|  |     private Long id; | ||||||
|  |     private String name; | ||||||
|  | 
 | ||||||
|  |     public Long getId() { | ||||||
|  |         return id; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setId(Long id) { | ||||||
|  |         this.id = id; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getName() { | ||||||
|  |         return name; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void setName(String name) { | ||||||
|  |         this.name = name; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,5 @@ | |||||||
|  | #spring.datasource.url=jdbc:postgresql://some-postgresql-host/some-postgresql-database | ||||||
|  | #spring.datasource.username=your-postgresql-username | ||||||
|  | #spring.datasource.password=your-postgresql-password | ||||||
|  | #spring.liquibase.change-log=classpath:liquibase/changelog.xml | ||||||
|  | #spring.liquibase.default-schema=user_management | ||||||
| @ -0,0 +1,23 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <databaseChangeLog | ||||||
|  |         xmlns="http://www.liquibase.org/xml/ns/dbchangelog" | ||||||
|  |         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|  |         xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd"> | ||||||
|  | 
 | ||||||
|  |     <!--    <changeSet id="0" author="unknown">--> | ||||||
|  |     <!--        <sql>--> | ||||||
|  |     <!--            CREATE SCHEMA IF NOT EXISTS user_management;--> | ||||||
|  |     <!--        </sql>--> | ||||||
|  |     <!--    </changeSet>--> | ||||||
|  |     <changeSet id="1" author="unknown"> | ||||||
|  |         <!--        <createTable tableName="users" schemaName="user_management">--> | ||||||
|  |         <createTable tableName="users"> | ||||||
|  |             <column name="id" type="bigint"> | ||||||
|  |                 <constraints primaryKey="true" nullable="false"/> | ||||||
|  |             </column> | ||||||
|  |             <column name="name" type="varchar(255)"> | ||||||
|  |                 <constraints nullable="false"/> | ||||||
|  |             </column> | ||||||
|  |         </createTable> | ||||||
|  |     </changeSet> | ||||||
|  | </databaseChangeLog> | ||||||
| @ -0,0 +1 @@ | |||||||
|  | CREATE SCHEMA IF NOT EXISTS user_management; | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user