목록JAVA (9)
개발일기장
일반 java proxy 말고 CGLIB에서 제공하는 proxy사용법 1. MethodInterceptor를 구현 methodProxy 객체가 있는것 말고는 여기까지는 비슷함 그리고 method.invoke보다 저게 더 빠르다고 하는데 몰루겠슴. @Slf4j public class TimeMethodInterceptor implements MethodInterceptor { private final Object target; public TimeMethodInterceptor(Object target) { this.target = target; } @Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy ..
Proxy 사용법. 1. InvocationHandler를 구현한 객체를 만듬 생성자에 실제 method를 수행할 객체를 넣어줘야함.. 그리고 다른것도 넣어도 될듯..? args에는 method를 호출 했을 때 넣어주는 인자값들. @Slf4j public class TimeInvocationHandler implements InvocationHandler { private final Object target; public TimeInvocationHandler(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { log..
일단 class를 이렇게 만들어 둠 static class Hello{ private Integer iValue = 10; public String sValue = "hello"; public String callA(String args){ log.info("call A"); return "A "+args; } public String callB(String args){ log.info("call B"); return "B"; } } 1. Class 정보 호출 // Class 정보 획득 Class classHello = Class.forName("hello.proxy.jdkdynamic.ReflectionTest$Hello"); // 내부에 있는 경우 $ 이렇게 하면 해당 파일에 위치한 class의 me..
SQLP자격증 공부하는 것 때문에 DB단에서의 transaction은 많이 봤었는데 웹서버 단에서는 따로 공부를 하지 않았음.. 그냥 쿼리에 for update를 사용한다거나, 아니면 서버에서 transaction시작 ~ 끝 소스코드 추가하는 정도.. 일단 모든 transaction의 시작은 connection을 받아오는것으로 부터 시작됨 그리고 그 connection같은 경우 jdbc에서 interface에서 추상화 되어있기 때문에 로직이랑 완벽?하게 분리 할 수 있음 conn.setAutoCommit(false); /* connection을 사용한 logic의 수행 select 문에서 for update를 사용하지 않으면 굳이 저렇게 사용할 필요는 없긴함 DML 을 위한 작업임 */ if( 성공시 )..
데이터베이스 커넥션을 획득하기 위한 복잡한 과정.. 1. 애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다. 2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 물론 이 과정에서 3 way handshake 같은 TCP/IP 연결을 위한 네트워크 동작이 발생한다. 3. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW와 기타 부가정보를 DB에 전달한다. 4. DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB 세션을 생성한다. 5. DB는 커넥션 생성이 완료되었다는 응답을 보낸다. 6. DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다. 이렇게 나와있다 단순히 local에서 확인하는 정도면 느낄 수 없겠지만, 대량의 transaction 이 발생하는 상황에..
JDBC(Java Database Connectivity)는 Java에서 db에 접속 하고 사용할 수 있도록 하는 API임 대표적으로 3가지 기능을 Interface로 정의해서 제공을 해줌 Connection(연결) / Statement(쿼리쏘기) / ResultSet(결과) 근대 이거는 그냥 Interface이기 떄문에 각각의 벤더사가 자기의 제품에 맞게 저거를 상속받고 구현을 해야함 그래서 JDBC를 사용할 떄 원하는 회사(Oracle, Mysql, DB2, PostgreSQL)의 jdbc를 import 하면 되는 부분임 (근대 interface는 동일하지만 sql쿼리 문법은 조금씩 되는게 있고 안되는게 있기 때문에 주의) 일단 DB를 켜주자 리눅스면 systemctl start mysql 하면 될듯..
예전에 취준할 때 NodeJS원툴이라서(근대 이것도 그냥 대충 개발하고/지금 다 까먹음) 스프링이랑 Java관련해서 공부해보자 해서 인프런에서 이것저것 강의 들었던 적이 있었음.. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1 스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의 백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 www.inflearn.com https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2 스프링..
(1) read 에서 namespace가 뭔지 몰랐는데 xml에서 같은 tag를 URI를 이용해서 구분해주는?? 그런느낌의 용도라고 한다 http://www.tcpschool.com/xml/xml_basic_namespace 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com 일단 XML 예시를 조금 수정해보자 111111 real 999999 test xmln:[bind]="value" 형식으로 상위 Tag에 정의를 해주면 되는 방식 이제 getChildren(tag-name, namespace)를 사용 List aChild = root.getChildren("ext", Namespace.getNamespace("www..