728x90
728x90

전체 글 299

자바 패턴 매치와 리플렉션을 이용한 자동 PreparedStatement 생성 - Java Pattern.matcher Reflection PreparedStatement

이전 "자바 PreparedStatement CRUD"를 통해 PreparedStatement를 이용하여 CRUD(Create, Read, Update, Delete)쿼리문을 처리하였습니다. 그러나 코드를 보면 반복적인 작업이 많이 있습니다. ​ 그래서 MyBatis(마이바티스)처럼 쿼리문에 "#{}"으로 파라미터를 입력하고 전달되는 객체를 이용해 자동으로 파라미터를 처리하여 PreparedStatement를 생성하게 하겠습니다. ​ 이전에도 PreparedStatement에 "?"의 순서대로 전달되는 객체의 맴버 필드 값을 설정하였습니다. ​ PreparedStatement에서 Select 쿼리문은 executeQuery()메소드로 실행되고 ResultSet객체로 쿼리 결과를 받습니다. 그리고 Inse..

자바 동적 형(타입) 변환 - Java Dynamic Casting - cast(), 이클립스(Eclipse)

우리가 많이 사용하는 형(타입) 변환(Casting)은 정적 캐스팅입니다. UserVO userVO = (UserVO)object; 정적 캐스팅은 이미 객체(object)가 어떤 클래스인지 알고 있어야 가능합니다. ​ 상속받은 객체라면 UpCasting(업캐스팅)으로 형(타입) 변환(Casting)하여 수퍼(부모) 클래스로 캐스팅할 수 있고 반대로 DownCasting(다운캐스팅)으로 자식(서브) 클래스로 캐스팅할 수 있습니다. ​ JDK 1.5부터 캐스트 구문을 대체할 수 있게 Class에서 cast() 메서드를 지원하고 있습니다. public T cast(Object obj) { if (obj != null && !isInstance(obj)) throw new ClassCastException(ca..

자바 JUnit를 이용한 단위 테스트 - Java JUnit Unit Test, 이클립스(Eclipse)

이전에 JUnit에 대한 설정 및 테스트, 실행 순서, 메서드에 대해 알아보았습니다. 그럼 실제로 사용되는 클래스를 중심으로 JUnit를 이용하여 테스트해보겠습니다. ​ 1. "test2" 프로젝트의 "Java Resources/src/main/java"에서 "com.home.project.test2.util.MessageDigestHelper.java"를 선택하고 마우스 오른쪽 버튼을 클릭하여 콘텍스트 메뉴에서 [New > Other...]를 클릭합니다. 2. "Select a wizard"창에서 "Wizards"에 "JUnit"을 입력하고 "JUnit Test Case"를 선택한 후 "Next >"버튼을 클릭합니다. "JUnit Test Case"창에서 "New JUnit 4 test"로 "Messa..

자바 JUnit의 fail, assert, assume 이해하기 - Java JUnit fail, assert, assume, 이클립스(Eclipse)

JUnit은 기본적으로 테스트 결과가 성공이라는 가정하에 실패인지 검사를 합니다. ​ 그래서 JUnit에 있는 메서드들은 "fail(무조건 실패로 AssertionError가 발생하고 다음 라인부터 실행되지 않습니다.)" "assert~(비교 검사나 조건이 실패하면 AssertionError가 발생하고 다음 라인부터 실행되지 않습니다.)" "assume~(조건이 실패하면 AssumptionViolatedException이 발생하고 다음 라인부터 실행되지 않습니다.)" 만 있습니다. ​ 테스트 케이스에서 "Error"나 "Exception"이 발생하면 테스트는 실패가 되고 실행을 중지합니다. 그래서 테스트 케이스에 "fail"이나 "assert~"가 없다면 무조건 성공으로 처리됩니다. ​ "fail()"메..

자바 JUnit 설정 및 테스트 - Java Maven JUnit, 이클립스(Eclipse)

JUnit은 자바 프로젝트에서 생성되는 클래스의 메서드를 기능 테스트하는 단위 테스트 도구입니다. 이름 그래로 "Java Unit Test"입니다. ​ JUnit를 설정하는 방법은 Maven를 통한 설정과 이클립스 Library를 추가로 설정하는 두 가지 방식이 있습니다. ​ Maven 방식과 이클립스 Library 추가 방식은 뭐가 다를까요? 바로 환경 설정에 차이가 있습니다. (기능은 동일합니다.) ​ Maven 방식은 프로젝트에 포함되는 파일인 "pom.xml"에 적용되어 형상관리 툴(Svn, Git)로 관리되는 프로젝트에서는 동일한 개발 환경으로 개발이 됩니다. 그러나 이클립스 Library 추가 방식은 개발자가 각자의 이클립스에 설정하는 것이 때문에 형상관리 툴로 관리되는 프로젝트에서는 설정을 ..

자바 PreparedStatement CRUD - Java PreparedStatement CRUD(Create, Read, Update, Delete)

"자바 어노테이션으로 데이터 액세스 객체 만들기 1~5"를 통해 DAO(Data Access Object) 인터페이스(interface)와 구현체(implements)를 만들어 보았고 "자바 데이터베이스 매니저 시큐어 코딩"를 통해 "Statement"에서 "PreparedStatement"로 수정해보았습니다. ​ 이번에는 "PreparedStatement"를 이용하여 CRUD(Create, Read, Update, Delete)에 대한 인터페이스(interface)와 구현체(implements)를 개발하겠습니다. ​ 이후에는 쿼리문 파라미터 치환과 Resultset를 객체로 변환에 대해 알아보겠습니다. ​ "CRUD"는 데이터처리 방식인 Create(생성/등록/추가), Read(읽기/조회), Updat..

자바 BasicDataSource(아파치 공통 DBCP) - Java BasicDataSource(Apache Commons DBCP), 이클립스(Eclipse)

"org.apache.commons.dbcp2"에 있는 "BasicDataSource"를 이용하여 데이터베이스 커넥션 풀(Pool)을 생성하여 이용하겠습니다. ​ 1. "test2" 프로젝트의 "pom.xml"을 오픈하여 "commons-dbcp2"는 주석 처리를 해제하고 "tomcat-jdbc"는 주석처리합니다. org.apache.commons commons-dbcp2 2.8.0 작업을 위해 JNDI 이용을 위해 설정한 정보들을 주석처리합니다. ​ 2. "Servers"에서 "Tomcat8-config"이나 "Tomcat9-config"의 "server.xml"의 ""태그안에 ""를 주석처리합니다. "context.xml"의 ""태그안에 ""를 주석처리합니다. "web.xml"의 를 주석처리합니다. ..

자바 JNDI 연동 2 - Java JNDI(Java Naming and Directory Interface), 이클립스(Eclipse)

9. "test2" 프로젝트의 "Java Resources/src/main/java"에서 "com.home.project.test2.dao.TestLoginDaoImpl.java"의 멤버 필드 형을 "TestDatabaseConectionPool"에서 @TestAnnAutowired @TestAnnQualifier("databaseMaria") private TestDatabaseConectionPool testDatabaseManager; "TestDatabaseJNDI"로 수정합니다. @TestAnnAutowired @TestAnnQualifier("databaseMaria") private TestDatabaseJNDI testDatabaseManager; 10. "Servers"탭에서 "tomca..

자바 JNDI 연동 1 - Java JNDI(Java Naming and Directory Interface), 이클립스(Eclipse)

이번에는 데이터베이스 커넥션 풀을 DBCP가 아닌 JNDI를 이용하겠습니다. ​ JNDI(Java Naming and Directory Interface)는 네이밍 서비스로 부터 제공하는 자원(데이터 및 객체)를 찾아 참고(lookup)하기 위한 자바 API입니다. ​ 데이터베이스 커넥션들을 자바 웹 응용프로그램(Java Web Application)이 아닌 WAS(Web Application Server)에서 데이터베이스 커넥션을 생성하고 풀(Pool)로 관리합니다. 자바 웹 응용프로그램에서는 JDNI의 "lookup()"를 통해 리소스에 접근하고 데이터베이스 커넥션을 가져와 이용합니다. ​ 1. "https://mvnrepository.com"를 접속하고 검색에 "Tomcat JDBC"를 입력하고 검..

자바 아파치 공통 데이터베이스 커넥션 풀 3 - Java Apache Commons Database Connection Pool (Commons DBCP2), 이클립스(Eclipse)

이번에는 "GenericObjectPool"를 효율적으로 관리할 수 있게 "PoolableConnectionFactory"와 "GenericObjectPoolConfig"의 설정들을 설명하고 추가하겠습니다. ​ 커넥션 유효 검사 쿼리 및 응답 시간 ​ setValidationQuery() 풀(Pool)에서 관리되는 커넥션들이 유효한지 검사하기 위한 쿼리문을 설정합니다. 기본적으로 공백입니다. String validationQuery = "select 1"; // 커넥션이 유효한지 검사하기 위한 쿼리 poolableConnectionFactory.setValidationQuery(validationQuery); 다음은 데이터베이스별 유효 검사 쿼리문입니다. "Oracle" : "select 1 from d..

자바 아파치 공통 데이터베이스 커넥션 풀 2 - Java Apache Commons Database Connection Pool (Commons DBCP2), 이클립스(Eclipse)

"DriverManager.getConnection()"에서는 "jdbc:apache:commons:dbcp:maria"의 URL만으로 데이터베이스 커넥션 풀(Pool)을 가져오는 방법은 매니저 드라이버(DriverManager)에 로드되어 등록된 드라이버 중에서 URL에서 풀(Pool) 명을 추출해 풀(Pool)명으로 등록된 풀(Pool)를 찾고 풀((Pool)에서 커넥션 객체를 가져옵니다. ​ 다음은 매니저 드라이버(DriverManager)의 "getConnection()"메소드 소스의 일부 부분입니다. for(DriverInfo aDriver : registeredDrivers) { Connection con = aDriver.driver.connect(url, info); } "registere..

자바 아파치 공통 데이터베이스 커넥션 풀 1 - Java Apache Commons Database Connection Pool (Commons DBCP2), 이클립스(Eclipse)

이번에는 스프링 프레임워크에서도 "DataSource"로 사용하고 있는 아파치 공통 데이터베이스 커넥션 풀(Apache Commons DBCP)를 이용하겠습니다. ​ 이번에 사용할 "Commons DBCP"의 버전은 2.8.x입니다. "Commons DBCP 2.x"부터는 JDK 8 버전, JDBC 4.2 버전부터 사용 가능합니다. 만약 JDK 6버전을 사용하신다면 "Commons DBCP 1.4"를 사용하시기 바랍니다. ​ "Commons DBCP"의 버전별로 JDK 버전과 JDBC 버전을 확인하시기 바랍니다. DBCP 2.7.0 compiles and runs under Java 8 only (JDBC 4.2) DBCP 2.6.0 compiles and runs under Java 8 only (JD..

자바 데이터베이스 커넥션 풀 매니저 만들기 5 - Java Database Connection Pool Manager, 이클립스(Eclipse)

커넥션 풀에서 모든 커넥션을 사용하고 있다면 커넥션 대기 시간(maxWait)에 따라 대기해야 합니다. 데이터베이스와 시스템의 성능이 좋을 경우 커넥션을 대기하지 않고 추가로 커넥션을 생성하여 사용하는 것이 좋습니다. 그렇지만 무한정 커넥션을 생성하는 것은 데이터베이스와 시스템에 부하가 발생하여 문제가 될 수 있습니다. 그래서 동시에 사용할 수 있는 최대 커넥션 개수(maxActive)와 커넥션이 반환될 때 최대로 유지될 수 있는 커넥션 개수(maxIdle)을 설정하여 효율적으로 관리되게 하겠습니다. ​ 1. "test2" 프로젝트의 "Java Resources/src/main/resources"에서 "/com/home/project/test2/config/database-maria.properties"..

자바 데이터베이스 커넥션 풀 매니저 만들기 4 - Java Database Connection Pool Manager, 이클립스(Eclipse)

커넥션 풀에서 웹 사이트에 접속되는 사용자가 많아져 처리해야 하는 쿼리가 많아지거나 쿼리 문제로 인해 커넥션이 반환이 되지 않을 경우 커넥션을 무한 대기하는 문제가 발생할 수 있습니다. 그래서 커넥션 최대 대기 시간(maxWait)을 설정하여 나올 수 있게 처리하겠습니다. ​ 1. "test2" 프로젝트의 "Java Resources/src/main/resources"에서 "/com/home/project/test2/config/database-maria.properties"파일에 커넥션 대기 시간(Connection Pool) 크기를 추가합니다. id=databaseMaria driverClassName=org.mariadb.jdbc.Driver url=jdbc:mariadb://localhost:33..

자바 데이터베이스 커넥션 풀 매니저 만들기 3 - Java Database Connection Pool Manager, 이클립스(Eclipse)

지금까지 만든 데이터베이스 커넥션 풀은 최초에 데이터베이스와 연결되는 커넥션 수(initialSize) 만큼 연결되게 되어 있습니다. 만약에 웹 사이트에 접속되는 사용자가 많아지거나 웹 페이지에서 처리해야 하는 쿼리가 많아지거나 쿼리가 복잡해 커넥션 반환이 느려지면 동시에 사용되는 커넥션 수가 최초에 생성된 커넥션 수 보다 많이 필요하게 됩니다. ​ 현재까지 생성되어 있는 커넥션을 동시에 다 사용하고 있다면 다음에 요청되는 것은 커넥션을 받을 수 없게 됩니다. 그래서 사용중인 커넥션이 반환될 때까지 대기(wait)거나 추가로 커넥션(Connection)을 생성하여 처리해야 합니다. ​ 참고로 "TestDatabasePoolManager.java"는 모든 서비스(serive) 클래스에서 사용하고 있어 "g..

자바 데이터베이스 커넥션 풀 매니저 만들기 2 - Java Database Connection Pool Manager, 이클립스(Eclipse)

데이터베이스 커넥션 풀을 적용하기 전에 기존과의 성능 차이를 확인하기 위해 쿼리를 처리하는 메소드에서 데이터베이스 접속 전과 종료 후에 소요시간을 계산하여 출력되게 하겠습니다. long startTime = System.currentTimeMillis(); {데이터베이스 쿼리문 실행 블럭} long endTime = System.currentTimeMillis(); System.out.println((endTime - startTime) + "ms 소요됨"); 4. "test2" 프로젝트의 "Java Resources"에서 "src/main/java"의 "com.home.project.test2.dao.TestLoginDaoImpl.java"에 "selectMember()"메소드 함수에서 "testDat..

자바 데이터베이스 커넥션 풀 매니저 만들기 1 - Java Database Connection Pool Manager, 이클립스(Eclipse)

이전 만든 데이터베이스 매니저는 단일 또는 복수 개의 데이터베이스 정보 프로퍼티를 읽어 데이터베이스 드라이버를 로드하고 DriverManager(드라이버 매니저)를 통해 연결(Connection)하여 사용할 수 있게 하였습니다. 자바 데이터베이스 매니저 만들기(https://carrotweb.tistory.com/70)를 참조하세요. 데이터베이스 매니저를 이용하여 데이터베이스를 연결하고 쿼리하는 되는 문제가 없습니다. 그러나 데이터베이스를 쿼리 할 때마다 데이터베이스 연결과 종료를 매번 해야 합니다. 이는 쿼리를 처리할 때마다 데이터베이스 접속과 종료 시간이 필요하게 됨으로 여러 명이 접속하여 수많은 쿼리를 처리하게 될 경우가 데이터베이스 접속 시간으로 인해 시스템 처리가 늘어지게 됩니다. 그래서 데이터..

자바 데이터베이스 매니저 패스워드 암호화 2 - Java Database Manager Password Encryption SHA-256 + Salt, 이클립스(Eclipse)

이전 "자바 어노테이션으로 데이터 액세스 객체 만들기"를 통해 로그인 관련 Controller, Service, DAO를 만들었습니다. 이번에는 암호화 메소드를 이용하여 데이터베이스의 사용자 패스워드를 암호화하여 적용 처리하겠습니다. ​ 데이터베이스의 사용자 로그인 테이블("MBR_ACCOUNT_TB")의 패스워드 필드("MBR_PWD")가 암호화되어 잊지 않고 패스워드 솔트 필드("MBR_PWD_SALT")가 비어있습니다. 이전에 만든 암호화 메소드를 이용하여 패스워드 필드("MBR_PWD")와 솔트 필드("MBR_PWD_SALT")에 암호화된 정보를 적용하겠습니다. 디비버 데이터베이스 테이블 생성(https://carrotweb.tistory.com/72)를 참조하세요. ​ 3. "TestLoginS..

자바 데이터베이스 매니저 패스워드 암호화 1 - Java Database Manager Password Encryption SHA-256 + Salt, 이클립스(Eclipse)

지금까지 사용자의 로그인 처리를 아이디와 패스워드로 단순 비교해서 처리하였습니다. 데이터베이스가 해킹을 당하거나 관리자 시스템을 통해 추출된 사용자 정보 리스트(엑셀 파일)가 유출된다면 아이디와 패스워드가 공개되어 로그인을 할 수 있습니다. 이런 문제를 방지하기 위해 사용자의 패스워드를 암호화하여 저장함으로써 해킹 및 유출시 로그인을 방지할 수 있습니다. 물론 시스템 해킹 및 정보 유출이 되지 않게 보안 및 관리해야 합니다. ​ 사용자 패스워드 암호화를 위해 사용할 암호화 해시 함수는 SHA-256과 Salt(솔트) 그리고 암호화 반복(Loop), Base64 인코딩입니다. ​ SHA-256(SHA-2, Secure Hash Algorithm 2)은 미국 국가안보국(NSA)가 설계한 암호화 해시 함수로 ..

자바 데이터베이스 매니저 시큐어 코딩 - Java Database Manager Secure Coding (PreparedStatement), 이클립스(Eclipse)

이전 자바 데이터베이스 매니저 만들기(https://carrotweb.tistory.com/70)에서 쿼리(query)문 실행을 위해서 "createStatement"매소드를 이용하여 정적인 쿼리(query)문을 사용하였습니다. 이전에도 언급한 것처럼 정적인 쿼리(query)문은 "SQL Injection"으로 보안상 취약점이 있습니다. ​ 실제로 "SQL Injection"를 테스트 해보고 안정적인 코딩을 위해 "PreparedStatement"를 이용하여 쿼리(query)문을 실행 할 수 있게 하겠습니다. ​ "JAVA 시큐어코딩 가이드"의 "제1절 입력 데이터 검증 및 표현"에서 "1. SQL 삽입(Improper Neutralization of Special Elements used in an S..

자바 어노테이션으로 데이터 액세스 객체 만들기 3 - Java Annotation DAO(Data Access Object), 이클립스(Eclipse)

지금 까지 로그인 처리를 위해 다오(DAO), 서비스(Service), 컨트롤러(Controller)를 생성하였습니다. "ServletContextListener"에서 다오(DAO) 클래스를 사용할 수 있게 의존성 주입(Dependency Injection - DI)를 하겠습니다. ​ 이전 "자바 데이터베이스 매니저 만들기 2"를 통해 데이터베이스매핑맵(databaseMappingMap)을 추가하였습니다. // DBId-Database 맵 Map databaseMappingMap = new HashMap(); String databaseManagers = sce.getServletContext().getInitParameter("DatabaseManager"); if (databaseManagers !=..

자바 어노테이션으로 데이터 액세스 객체 만들기 2 - Java Annotation DAO(Data Access Object), 이클립스(Eclipse)

로그인 요청(Request) URL를 처리하는 컨트롤러(Controller) 클래스를 생성하고 기존의 서비스(Service) 클래스인 "TestLoginService.java"를 수정하여 DAO(Data Access Object) 클래스를 의존성 주입(DI)하여 처리되도록 하겠습니다. ​ 기존 "TestDispatcherServlet.java"의 "service"메소드에서 처리되는 "login.do"과 "loginprocess.do"를 로그인 컨트롤러(Controller)를 만들어 분리하겠습니다. 7. "test2" 프로젝트의 "Java Resources"에서 "src/main/java"의 "com.hom.project.test2.controller"에서 오른쪽 버튼을 클릭하여 컨텍스트 메뉴 [New >..

자바 어노테이션으로 데이터 액세스 객체 만들기 1 - Java Annotation DAO(Data Access Object), 이클립스(Eclipse)

마리아디비(MariaDB) 설치와 JDBC 드라이버로 데이터베이스 연결해주는 매니저를 구성했으니 데이터베이스와 연동하여 쿼리를 처리하는 DAO(Data Access Object) 클래스를 생성하겠습니다. ​ 이전 시큐리티 필터(TestSecurityFilter.java)에서 인증처리하기 위해서 로그인 서비스(TestLoginService.java)통해 사용자의 아이디와 패스워드를 하드코딩으로 검증하였습니다. if ("testid".equals(id) && "testpwd".equals(password)) { } 이 부분을 데이터베이스를 통해 처리되도록 DAO(Data Access Object) 클래스를 생성하고 서비스 클래스에 의존성 주입(DI)을 하여 처리되도록 하겠습니다. ​ 1. "test2" 프로..

디비버 데이터베이스 테이블 로우 등록 / 업데이트 / 복제 / 삭제 - DBeaver Database Table Insert / Update / Copy / Delete Row

디비버(DBeaver) 툴을 이용하여 테이블(Table)에 로우(Row)를 등록, 업데이트, 복제, 삭제를 하겠습니다. ​ 1. 테이블 로우(Row) 등록(Insert) ​ 오른쪽에서 "MBR_ACCOUNT_TB"에서 "Data"탭을 클릭하고 하단 툴바에서 "Insert(새로운 로우 추가)"버튼을 클릭합니다. 그러면 "NULL"로 채워진 로우(ROW)가 생성됩니다. 컬럼을 더블 클릭하거나 컬럼 선택 후 오른쪽에 있는 "Value"에서 값을 입력할 수 있습니다. ​ 이전 로그인 서비스 사용했던 아이디와 패스워드를 사용하겠습니다. "MBR_ID"는 "testid", "MBR_PWD"는 "testpwd", "MBR_NM"은 "홍길동", "REG_ID"는 "SYSTEM"으로 입력합니다. 하단 툴바에서 "Save..

디비버 데이터베이스 테이블 명 자동 소문자 변환 해결 - DBeaver Database Auto Lower Case Table Name

테이블 명을 대문자로 입력(MBR_ACCOUNT_TB)하였는데 생성된 테이블은 소문자로 변경(mbr_account_tb)된 것을 확인할 수 있습니다. 그 이유는 마리아디비(MariaDB)가 윈도우에 설치될 때는 테이블 명에 대한 기본적으로 설정이 입력되는 모든 문자를 소문자로 변환하여 처리되게 설정되어 있기 때문입니다. (lower_case_table_names = 1) ​ 소문자로 사용해도 문제는 없습니다. ​ 그러나 개발은 개인 PC에서 하지만 운영은 리눅스 서버에서 한다면 테이블 명의 대소문자 구분은 고려해야 합니다. 리눅스에 설치되는 마리아디비(MariaDB)은 기본적으로 대소문자를 구분하게 설정되어있습니다. (lower_case_table_names = 0) ​ 만약, 리눅스 서버에서 설치된 마..

디비버 데이터베이스 테이블 생성 - DBeaver Database Create Table

1. 윈도우 "시작"(start) 버튼을 클릭하고 목록의 "D"에서 "DBeaver"를 클릭하거나 윈도우 "시작"(start) 버튼을 클릭하고 "스페이스 바"(Space Bar)을 클릭하여 입력창에 "DBeaver"입력 후 "DBeaver"를 클릭하여 디비버(DBeaver)를 실행합니다. ​ "Database Navigator"에서 "localhost - localhost:3306"를 클릭하고 "Databases"의 "test"를 클릭합니다. "test" 데이터베이스에는 생성된 테이블(Table)이 없습니다. ​ 쿼리(query)를 테스트와 이전 자바 시큐리티 필터 만들기(https://carrotweb.tistory.com/37)에서 로그인 처리를 위해 소스에서 계정을 비교 처리한 부분이 있었습니다. ..

자바 데이터베이스 매니저 만들기 2 - Java Database Manager, 이클립스(Eclipse)

4. "TestServletContextListener.java"의 "contextInitialized"에 읽어들인 데이터베이스 프로퍼티 파일로 부터 데이터베이스의 ID와 읽어들인 정보로 생성된 데이터베이스 매니저(TestDatabaseManager)를 매핑하하기 위해 데이터베이스매핑맵(databaseMappingMap)을 추가합니다. 향후 "DAO" 클래스 작업 시 의존성 주입(Dependency Injection)에 사용됩니다. // DBId-Database 맵 Map databaseMappingMap = new HashMap(); "getServletContext().getInitParameter"로 데이터베이스 매니저 프로퍼티 파일 경로를 읽어옵니다. String databaseManagers =..

자바 데이터베이스 매니저 만들기(JDBC 드라이버) 1 - Java Database Manager(JDBC Driver, Statement), 이클립스(Eclipse)

JDBC 드라이버들을 이용하여 데이터베이스와 연결할 수 있게 데이터베이스 매니저를 만들겠습니다. ​ 이번에는 단일 또는 복수개의 데이터베이스 프로퍼티를 통해 다양한 데이터베이스와 연결할 수 있게 구성하고 쿼리를 요청할 때마 데이터베이스에 접속하고 쿼리를 실행하고 접속을 종료하는 메서드와 쿼리만 실행하는 메서드를 만들어 트랜잭션도 처리할 수 있게 개발하겠습니다. ​ 다음에는 컨넥션 풀(Connection Pool)을 이용하는 방식과 JNDI(Java Naming and Directory Interface) API를 이용하는 방식을 통해 서블릿(Servlet)의 데이터소스(DataSource)에 대해 알아보겠습니다. 데이터소스(DataSource)란 서버로부터 데이터베이스에 연결을 하기 위해 사용되는 이름으..

자바 마리아디비 연결 (JDBC 드라이버) - Java MariaDB Connection JDBC Driver

Java에서 JDBC 드라이버로 마리아디비(MariaDB)와 연결하겠습니다. Spring으로 Project를 진행하신다면, 다음으로 이동하여 보시기 바랍니다. Maven Spring Project에 MariaDB JDBC(Java Database Connectivity) 적용 (mariadb-java-client 3.0.5) Maven Spring Project에 DataSource (Apache Common DBCP2 - 2.9.0) 적용 Maven Spring Project에 MyBatis 적용 (MyBatis 3.5.10, MyBatis-Spring 2.0.7, spring-jdbc 5.2.22) Maven Spring Project에 Model, Mapper XML 추가 Maven Spring P..

원도우 10 디비버 21 설치 - Windows 10 DBeaver 21.0.3

1. 디비버(DBeaver) 사이트(https://dbeaver.io/)를 접속합니다. DBeaver Community | Free Universal Database Tool DBeaver Universal Database Tool Free multi-platform database tool for developers, database administrators, analysts and all people who need to work with databases. Supports all popular databases: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, dbeaver.io "Download"버튼을 클릭합니다. 다운로드 페이지에서 아..

728x90
728x90