반응형 개발128 [Mybatis] Mybatis는 어떻게 동적쿼리인지 판단할까? Mybatis는 동적쿼리를 작성할 수 있는 기능을 제공한다. 어떠한 원리로 동적쿼리인지 아닌지 판단하는건지 궁금해서 Mybatis 소스를 분석해보았다. Mapper 등록과정은 아래에서 보실 수 있습니다. csy7792.tistory.com/301 [Mybatis] Mapper는 어떻게 등록되는 것일까 ? Mybatis를 처음 접하게되면 xml 또는 JAVA로 설정만 해주면 어디서든 가져다쓸 수 있다는것이 마법같이 느껴질 수 있다. 어떠한 원리로 그렇게 사용할 수 있는지 알아보도록 하겠다. MybatisConfiguration. csy7792.tistory.com 지금부터는 작성한 쿼리가 동적쿼리인지 아닌지 어떻게 판단하는지 알아보겠습니다. 1.XMLConfigBuilder.mapperElement 등록할.. 2020. 12. 31. [JMeter] 주요개념 JMeter란? 성능 측정 및 부하 테스트 기능을 제공하는 애플리케이션 JMeter 주요개념 Thread Group : 한 Thread당 유저 1명 Sampler : 유저가 해야하는 Action Listener : 응답을 받았을 때 할일 Configuration : Sampler 또는 Listener 가 사용할 설정 값 Assertion : 응답이 성공인지 확인하는 방법 2020. 12. 28. [Mybatis] StatementType Executor에서 Handler를 만들 때 RoutingStatementHandler를 통해서 Handler를 생성한다. 이 Handler가 무슨역할을 할까 궁금하여 들어가보니 아래와 같은 역할을 하고 있었다. StatementType별로 다른 Handler를 생성하는 역할을 하고 있었다. 그렇다면 StatementType은 무엇일까? 쿼리를 날리는 방식인 것 같다. STATEMENT, PREPARED는 Statement, PreparedStatement 와 동일하다. CALLABLE은 프로시저를 실행할 때 사용하는 Type이다. Default값은 PREPARED이다. 2020. 12. 28. [Mybatis] 쿼리를 어떻게 실행하는 것일까? Mybatis는 Mapper 또는 xml을 이용하여 쿼리를 작성해놓고 코드로 실행 시키기만 하면 알맞는 쿼리를 실행하도록 한다. 이번에는 어떠한 원리로 xml로 작성한 쿼리가 실행되는지 알아보도록 하겠다. Mapper 등록 원리는 아래에서 볼 수 있습니다. csy7792.tistory.com/301 [Mybatis] Mapper는 어떻게 등록되는 것일까 ? Mybatis를 처음 접하게되면 xml 또는 JAVA로 설정만 해주면 어디서든 가져다쓸 수 있다는것이 마법같이 느껴질 수 있다. 어떠한 원리로 그렇게 사용할 수 있는지 알아보도록 하겠다. MybatisConfiguration. csy7792.tistory.com 바로 시작하겠습니다 1. SqlSession.query 아래 메소드를 실행하게 된다면 현재.. 2020. 12. 28. [Mybatis] Parameter not found. Available parameters are [arg0, param1] Parameter not found. Available parameters are [arg0, param1] Mybatis를 xml이 아닌 Mapper 어노테이션은 이용할 때 다음과 같은 오류가 발생할 수 있다. 오류가 발생하는 구문 해당오류는 파라미터의 개수가 2개이상일때 발생한다. 해결방안은 총 4가지가 있다. @Param 어노테이션 사용 파라미터명, 바인딩될 변수명을 arg0, arg1, ....... 으로 맞춰주기 파라미터명, 바인딩될 변수명을 param1, param2, ..... 으로 맞춰주기 Compile Option에 -parameters 추가 1. @Param 어노테이션 사용 2. 변수명을 arg으로 맞추기 3. 변수명을 param으로 맞추기 2020. 12. 27. [Mybatis] Mapper는 어떻게 등록되는 것일까 ? Mybatis를 처음 접하게되면 xml 또는 JAVA로 설정만 해주면 어디서든 가져다쓸 수 있다는것이 마법같이 느껴질 수 있다. 어떠한 원리로 그렇게 사용할 수 있는지 알아보도록 하겠다. MybatisConfiguration.xml 파일 .... SqlMapClient.java public class SqlMapClient { private static SqlSessionFactory sqlMapper; static { try { String resource = "config/myBatisConfig.xml"; Reader reader = Resources.getResourceAsReader(resource); sqlMapper = new SqlSessionFactoryBuilder().build(rea.. 2020. 12. 27. [Mybatis] Interface를 이용하여 Query 날리기 Mybatis는 xml으로 Query를 실행할 수도있지만 Interface를 선언하고 Method에 어노테이션을 붙임으로써 Query를 날릴 수 있다. 간단하게 방법을 알아보도록 하겠다. Interface를 하나 생성하고 Method를 만든다. 간단한 예제이기때문에 @Select 어노테이션을 이용하여 쿼리를 작성한다. MybatisConfiguration.xml Config 파일에 매퍼의 패키지를 등록한다. 등록된 Mapper를 가져와서 만들어놓은 Method를 실행한다. 끝! 2020. 12. 27. [Mybatis] Application Server의 Connection Pool 이용하기 회사에서 기존 Persistence Framework는 아래와 같은 문제점이 존재하였다. 어떠한 쿼리가 현재 작성되어 있는지 관리가 전혀 되지않음 파라미터 바인딩이 어려움 Dynamic Query를 작성하기 어려움 Dynamic Query를 작성하려면 비즈니스로직에 작성해야함 -> 유지보수가 힘들어짐 그렇기에 팀장님께 Persistence Framework 교체를 건의했으며 후보는 아래와 같았다. hibernate Mybatis hibernate로 이관을 하려면 러닝커브가 존재했으므로 보류되었고 비교적 바로적용할 수 있는 Mybatis가 채택되었다. 현재 회사의 설정에는 Application Server의 Connection Pool을 Applictaion이 당겨다가 쓰는방식으로 되어있었다. 그렇기에 M.. 2020. 12. 26. [Mybatis] interceptor 를 등록하면 어떠한 원리로 동작하는가 ? ..... Mybatis를 사용하다가 Interceptor를 이용할일이 생겼다. Interceptor를 등록을하고 사용을 하는데는 문제가 없었지만 어떠한 원리로 동작을 저렇게 할 수 있는지 궁금해졌다. 그래서 Mybatis를 뜯어보기로 결심했다. (Mybatis Source : github.com/mybatis/mybatis-3) 순서 1. SqlSessionFactoryBuilder.build 2. XMLConfigBuilder.parse 3. XMLConfigBuilder.parseConfiguration 4. XMLConfigBuilder.pluginElement 5. DefaultSqlSessionFactory.openSessionFromDataSource 6. Configuration.newEx.. 2020. 12. 25. [javascript] drag시 화면밖을 벗어났는지 판단하는 법 drag & drop 을 구현하다가 브라우저 안에서 드래그해서 브라우저 밖에다가 놨을때를 판단할 일이 생겼다. 1번에서 시작해서 2번에다가 놓을 때 지금 하고 있는 모든행동을 취소 해야했다. document.addEventListener('dragend', function(event){ if(isOutOfBrowser(event)){ alert('화면 밖을 벗어날 수 없습니다'); } }) function isOutOfBrowser(event){ return event.clientX window.innerWidth; } dragend 이벤트의 event값에 있는 clinetX값은 브라우저를 왼쪽으로 벗어났으면 0보다 작은값 오른쪽으로 벗어났으면 브라우저창의 크기보.. 2020. 12. 22. [Spring] Junit5로 예외테스트 하기 JUnit4 에서는 아래와같은 어노테이션으로 예외를 테스트 했습니다. @Test(expected=DuplicateKeyException.class) JUnit5 에서는 예외 테스트의 방법이 달라집니다. 어노테이션에서 아래와같은 메소드를 사용하는 방식으로 변경 되었습니다. 사용법 첫번째 인자로 기대하는 예외 클래스를 줍니다. 두번째 인자로 실행하려는 로직을 줍니다. 예제 @Test @DisplayName("이미 있는 ID로 회원가입시 실패") public void duplication_check_when_signup() throws Exception{ assertThrows(DuplicateKeyException.class, ()-> { Account account = Account.builder() .u.. 2020. 12. 6. [Spring] PostgreSQL yml 설정 spring boot PostgreSQL yml 설정입니다. spring: datasource: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://url:port/database username: id password: password 2020. 12. 6. 이전 1 2 3 4 5 6 7 ··· 11 다음