반응형

설치환경은 window 10 내에 oracle VM내에 가상 CentOS 7이다.

 

#docker search oracle

#docker search oracle

하면 여러 개 나온다.

docker search oracle

 

 

많이 사용하고 별점 많은걸 기준으로 oracleinanutshell/oracle-xe-11g 요놈을 선택했다.

 

#docker pull oracleinanutshell/oracle-xe-11g

#docker pull oracleinanutshell/oracle-xe-11g

docker pull oracle

pull 받을 때 로그인하라고 해서 허브에서 사용자 생성하고 로그인 후 받았다.

하단에 보면 알지만 no space left on device 때문에 삽질 후 진행할 수 있었다.

 

#docker run -d -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true oracleinanutshell/oracle-xe-11g

#docker run -d -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true oracleinanutshell/oracle-xe-11g

docker run oracle

 

#docker ps로 container id를 확인후 bash로 해당 컨테이너로 접속한다.

#docker exec -it cbb692a17cc5 bash

#docker exec -it cbb692a17cc5 bash

#sqlplus

#sqlplus


기본 접속 정보다.

hostname: localhost
port: 49161
sid: xe
username: system
password: oracle

반응형
반응형
package com.daonstar.web;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.stream.Collectors;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;



public class ListToMapTest {
	
	private List<Book> books;
	private final String NAME = "책읽자";
	private final int RELEASE_YEAR = 2009;
	private final String ISBN = "0101234929";
	private final int initAddBookCount = 3;
	
	@Before
	public void init() {
		System.out.println("@Before");
		books = new ArrayList<>();
		booksAdds();
	}
	
	@After
    public void tearDown() throws Exception {
		System.out.println("@After");
		books.clear();
    }

	private void booksAdds() {
		for (int i = 0; i < initAddBookCount; i++) {
			
			int releaseYear = RELEASE_YEAR;
			if ( i > 1 ) {
				releaseYear = RELEASE_YEAR + i;
			}
			books.add(new Book(NAME + i, releaseYear, ISBN + i));
		}
	}
	
	private Map<String, String> listToMap(List<Book> books) {
		return books.stream().collect(Collectors.toMap(Book::getIsbn,  Book::getName));
	}

	@Test
	public void whenConvertFromListToMap() {
		System.out.println("@test1");
		assertTrue(listToMap(books).size() ==3);
	}
	
	public Map<Integer, Book> listToMapWithDupKeyError(List<Book> books) {
		return this.books.stream().collect(Collectors.toMap(Book::getReleaseYear,  Function.identity()));
	}
	
	
	@Test(expected = IllegalStateException.class)
	public void whenMapHasDuplicateKey_whthout_merge_function_then_runtime_exception() {
		listToMapWithDupKeyError(books);
	}
	
	public Map<Integer, Book> listToMapWithDupKey(List<Book> books) {
		return books.stream().collect(Collectors.toMap(Book::getReleaseYear,  Function.identity(), (existing, replacement) -> existing));
	}
	
	@Test
	public void whenMapHasDuplicateKeyThenMergeFunctionHandlesCollision() {
		Map<Integer, Book> booksByYear = listToMapWithDupKey(books);
		assertEquals(2, booksByYear.size());
		assertEquals(ISBN + 0, booksByYear.get(RELEASE_YEAR).getIsbn());
	}
	
	public Map<Integer, Book> listToConcurrentMap(List<Book> books) {
		return books.stream().collect(Collectors.toMap(Book::getReleaseYear,  Function.identity(), (o1, o2) -> o1, ConcurrentHashMap::new));
	}
	
	@Test
	public void whenCreateConcurrentHashMap() {
		assertTrue(listToConcurrentMap(books) instanceof ConcurrentHashMap);
	}
	
	
	public TreeMap<String, Book> listToSortedMap(List<Book> books) {
		return books.stream()
				.sorted(Comparator.comparing(Book::getName))
				.collect(Collectors.toMap(Book::getName, Function.identity(), (o1, o2) -> o1, TreeMap::new));
	}
	
	@Test
	public void whenMapisSorted() {
		String firstBookName = "책읽자0";
		assertTrue(listToSortedMap(books).firstEntry().getKey().equals(firstBookName));
	}
	
	
}

 

나름 TDD하면서 해봤다.

아직  JUnit도 어설퍼서 이것저것 태스트 하느라 로그도 찍었다.

Collectors.toMap 요놈 이용해서 리스트를 맵으로 바꾸면 되는 요지인데, 키 중복일때 처리 방법도 있다.

요지는 list to map 인데 테스트 관련해서 리팩토링 할려고 노력중이라 코드가 산으로 가고 다른 생각이 많이 든다.

 

참고 https://www.baeldung.com/java-collectors-tomap

 

Java 8 Collectors toMap | Baeldung

Learn how to use the toMap() method of the Collectors class.

www.baeldung.com

 

반응형
반응형

DataJpaTest를 연습중이다.

아래와 같이 진행하면 testRepository.save() 하면 실제로 쿼리를 실행시키지 않는다.

기본으론 내장 메모리로 하는 것 같다.

@RunWith(SpringRunner.class)
@DataJpaTest 

아래와 같이 추가해주면 쿼리가 실행되며 쿼리가 찍히는걸 확인 할수 있다.

@Transactional(propagation = Propagation.NOT_SUPPORTED)

 

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html

 

46. Testing

A Spring Boot application is a Spring ApplicationContext, so nothing very special has to be done to test it beyond what you would normally do with a vanilla Spring context. By default, @SpringBootTest will not start a server. You can use the webEnvironment

docs.spring.io

찾아보니 기본적으로 data JPA 테스트는 트렌잭션과 롤백이 된다고 하고,

위에 설정을 통해 트랜젝션 비활성으로 설정이 된다고 나와 있다.

 

데이터가 영속성에 잘 들어갔는지 실제로 Assert로 데이터를 가져와서 확인을 할려면

EntityManager를 사용해서 확인하는데

@Transctional을 사용하면

@TestEntityManager는 접근이 안되고 @EntityManager로 접근해야한다.

 

반응형
반응형

가상 서버에 도커로 mariadb설치후 기본으로 db 생성 하고 테스트 진행 했더니 아래와 같이 insert가 실패된다.

DataJpaTest로 실행 시켜선지 기본 Console 에는 자세하고 안나오고 Failure Trace에 자세히 보면 알수 있다.

결국은 DB 언어셋을 잘 맞춰주면 된다.

-----------------------------------------------------------------------------------------------------

could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not execute statement

at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:300)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:253)
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:536)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:746)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:714)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:534)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:305)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:138)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
at com.sun.proxy.$Proxy103.save(Unknown Source)
at com.daonstar.web.apps.board.BoardRepositoryTest.insert_단건_성공(BoardRepositoryTest.java:68)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)
at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
Caused by: org.hibernate.exception.DataException: could not execute statement
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:52)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:178)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3176)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3690)
at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:90)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:478)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:356)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1454)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:511)
at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3290)
at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2486)
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:473)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:178)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$300(JdbcResourceLocalTransactionCoordinatorImpl.java:39)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:271)
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:104)
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:532)
... 48 more
Caused by: java.sql.SQLDataException: (conn=210) Incorrect string value: '\xEA\xB2\x8C\xEC\x8B\x9C...' for column `board`.`board`.`name` at row 1
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:225)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:165)
at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:238)
at org.mariadb.jdbc.MariaDbPreparedStatementClient.executeInternal(MariaDbPreparedStatementClient.java:232)
at org.mariadb.jdbc.MariaDbPreparedStatementClient.execute(MariaDbPreparedStatementClient.java:159)
at org.mariadb.jdbc.MariaDbPreparedStatementClient.executeUpdate(MariaDbPreparedStatementClient.java:194)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175)
... 65 more
Caused by: java.sql.SQLException: Incorrect string value: '\xEA\xB2\x8C\xEC\x8B\x9C...' for column `board`.`board`.`name` at row 1
Query is: insert into board (created_date, editer_use_at, file_maximum_count, name, secret_use_type, update_date, id) values (?, ?, ?, ?, ?, ?, ?), parameters ['2019-06-07 10:00:07.6137353',0,2,'게시판이름','DISABLE','2019-06-07 10:00:07.6137353',16]
java thread: main
at org.mariadb.jdbc.internal.util.LogQueryTool.exceptionWithQuery(LogQueryTool.java:163)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:280)
at org.mariadb.jdbc.MariaDbPreparedStatementClient.executeInternal(MariaDbPreparedStatementClient.java:223)
... 70 more

반응형
반응형

생성시 설정

CREATE DATABASE createDatabaseName DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

 

수정

ALTER DATABASE databaseName DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

반응형
반응형
엠드게임 보려고 어제 영화관을 찾았다.
시간이 안맞아 요금표를 확인하고 뒷날 보고싶은 영화가 조조시간대에 있다는걸 확인하고
오늘 부랴부랴 9시까지 롯데시네마로 갔다.
칠천원으로 저렴하게 조조영화를 볼수 있겠다 내심 쁘듯해하며 영화관에 갔으나..
일반관에서는 상영 안하고 리클라이너관만 상영한다.
지난번 오픈할때즈음에도 그랬다.
조조는 대부분 리클라이너관만 하는것 같다. 고로 조조는 일반관은 프라임 시간과 요금이 같다.

롯데시네마 삼화지구점은 항상 리클라이너관인지 전화로만 확인이 가능하다. 인터넷 예약사이트에선 확인이 안된다.
어쨌든 일반관은 조조상영은 없어 보인다.

저렴하게 조조영화를 보실분은 롯데시네마 삼화지구점은 비추합니다.

리클라이너관 내가보기엔 좌석 조금크고 누워서볼수 있다는데...
조조영화 상영시간 때에맞지 않은 상영관인거 같아보인다. 그리고 시간대에 비싼상영관은 너무 상술이 눈에 보인다.
반응형
반응형

제주 MBC 2019 국제 평화 마라톤에 참가했다.

일반코스 10Km에 도전했다.

생에 첫 도전이다.

1시간 12분 53초 

런닝화에 기록칩 장착!!
제16회 2019제주MBC국제평화마라톤 10Km 완주기념 메달

반응형
반응형

org.hibernate.LazyInitializationException: could not initialize proxy [com.jejunet.cms.server.domain.Server#216] - no Session

at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:169)

at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:309)

at org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor.intercept(ByteBuddyInterceptor.java:45)

at org.hibernate.proxy.ProxyConfiguration$InterceptorDispatcher.intercept(ProxyConfiguration.java:95)

at com.jejunet.cms.server.domain.Server$HibernateProxy$1dTl2oLJ.getName(Unknown Source)

at com.jejunet.cms.server.ServerServiceTest.getServer(ServerServiceTest.java:122)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.base/java.lang.reflect.Method.invoke(Method.java:566)

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)

at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)

at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)

at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)

at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)

at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)

at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)

at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)

at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)

at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)

at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)

at org.junit.runners.ParentRunner.run(ParentRunner.java:363)

at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)


아래와 같이 테스트 메소드를 단순히 저장하고 조회 하는데 예외 발생했다.

단건 가져오는것에 japRepository 기능 구현이 다른가보다.

repository.findByid(id);  /* Retrieves an entity by its id  */

repository.getOne(id);  /* Returns a reference to the entity with the given identifier. */ <= 이놈 쓰면 오류남 

@Test

public void getServer() {

Server savedServer = repository.save(new Server(SERVER_NAME));

Optional<Server> server2 = serverService.getServer(savedServer.getId());

assertEquals(savedServer.getName(), server2.get().getName());

}


아래 블로그에서 싶게 설명하고 있다. 

영속성 관련해서 레퍼런스만 필요할때 경우에 따라 쓴다고 하네요.(복잡함 ㅠㅠ)

https://bebong.tistory.com/entry/JPA-Lazy-Evaluation-LazyInitializationException-could-not-initialize-proxy-%E2%80%93-no-Session 

반응형
반응형

https://github.com/ojdkbuild/ojdkbuild 여기서 윈도우용 설치 가능한 파일을 다운로드 할수 있다.

github.com openjdk buildgithub.com openjdk build


openjdk 11로 설치할 예정이다.

java-11-openjdk-11.0.1.13-1.ojdkbuild.windows.x86_64.msi (sha256) 을 클릭 하여 다운로드 한다.

약 240MB 정도 된다.

다운로드 후 파일을 클릭하여 실행한다.

window defenderwindow defender java openjdk install

윈도우 Defender에서 차단한다. 그래도 그냥 실행해서..


설치 마법사화면이 보이며 진행한다.

openjdk wizardopenjdk wizard

라이센스 동의하고 다음 으로 진행한다.

openjdk license 동의openjdk license 동의

기본으로 JAVA_HOME Variable 과 JAR Files Association 은 선택이 안되어 있다.

일단 기본으로 설치한다.

설치경로는 기본으로 Program Files\ojdkbuild\java-11-openjdk-11.0.1.1-1\ 로 되어있다.

openjdk 설치 설정openjdk 설치 설정


java -version 하면 그냥 기존에 있던 버전으로 표시된다.

JAVA_HOME 환경변수를 안바꿔서 그렇다.


STS 에서 설치한 openJDK를 사용할수 있게 해보자.

Window -> Proferences -> java -> Installed JREs


sts Installed JREsWindow -> Proferences -> java -> Installed JREs


Add JRE 버튼으로 클릭 Standard VM 선택 Next 다음

sts add JRE


sts add JREJRE home

OpenJDK설치 경로를 선택하면 JAE name 이 알아서 선택된다.

Finish 로 완료 한다.

new spring starter projectnew spring starter project java version 11

새 스프링 프로젝트 를 누르면 Java  Version에 11 버전이 나오면 끝.




반응형
반응형

STS 메뉴 -> Help ->  Eclipse Marketplace -> "Angular" 로 검색


Angular IDE CI 가 제일 위에 있다. 이놈은 라이센스가 있는놈이다. 무료평가 시기 45일 지나면 못쓴다.  그래서 이놈은 패스

아래 AngularJS Eclipse 1.2.0 요놈은 AngularJS 라서 패스.

조금더 내리다 보면 Angular Eclipse 1.3.0 이 있다. 요놈으로 설치 해볼려고 한다.


Angular Eclipse 1.3.0 2018-12-07 지금 이건 설치 비추한다. 

여러가기 버그가 존재하고. 

https://github.com/angelozerr/angular-eclipse/issues/107 해결이 안된다. 

설치 해보고 싶으면 Angular IDE CI 요놈으로다가 무료기간 동안만 써보시길 바란다.


Angular Eclipse is a set of plugins which provide support for Angular:


타입스크립트 지원, Angular cli 통합 터미털, Angular@ 문법을 에디터에서 지원한다고 한다.

위자드와 라운처도는 파일 자동생성이나 빌드 관련 툴 같은데 나중에 써봐야겠다.


TypeScript Debugging support 는  Oxgen 버전 이상이어야 지원된다고 하는거 같은데 일단 체크 하고 다음 으로 진행 했다.


라이센스 동의후 완료 하면 창이 닫히면서 설치 진행된다.


중간에 보안관련해서 설치 진행 할꺼냐고 묻는다. Install Anyway 로 해서 진행 했다.


STS 재시작 하라고 나온다. Restart Now 로 재시작 한다.


머가 바꿨는지 보면 일단 오른쪽 상단에 Perspective 를 눌러보면 다음과 같이 Angular가 딱하니 있다.


Angular Perspective 로 변경해서 작업 하자.


기본 화면 구조는 같아보이고 하단에 터미널이 눈에 띈다.  CLI 관련 처리를 위해서 기본으로 나온거 같아보인다.


하면서 전부 캡쳐 해놓은거 캡쳐 프로그램 오류로 캡쳐 이미지 전부 없어졌다.   

아래는 맨마지막  Angular Perspective 로 변경 후 이미지를 다시 캡쳐한것이다.

sts angular perspectivests angular perspective view



https://angular.io/guide/language-service 에 있듯이 아래 3개 중에 하나로 하는걸 강추 한다.

Visual Studio code로 해볼 예정이다.

  • Visual Studio Code 

  • WebStorm

  • Sublime Text



반응형

+ Recent posts